JS动态添加选项

要做一个调查问卷,问题数量不定,问答答案不定。

JS控答案效果图

JS控答案效果图

为了实现这个效果,点击那个按钮就在下面添加4个答案框,选择从A-Z这26个字母,就是为了ASSIC码方便处理

看看HTML结果

<table width="100%" class="form">
	  <tr>
	     th width="100px"><label>标题1:</label></th>
	     <td align="left"><input type="text" class="large" id="title" name="title" />&nbsp;<span class="error">请输入标题</span></td>
	</tr>
	<tr>
	<th width="100px"><label>选择类型:</label></th>
	<td align="left">
	<input type="radio" name="radio" />单选&nbsp;&nbsp;&nbsp;
	<input type="radio" name="boxcheck" />多选&nbsp;&nbsp;&nbsp;
	<input type="radio" name="select" />下拉&nbsp;&nbsp;&nbsp;
	</td>
	</tr>
	 <tr>
	<th width="100px"><label>答案:</label></th>
		<td align="left">
			  <div>
				 <div style="float:left;" id="1">
					 A:<input type="text" class="mimi" name="A" />
					 B:<input type="text" class="mimi" name="B" />
					 C:<input type="text" class="mimi" name="C" />
					 D:<input type="text" class="mimi" name="D"/>
				 </div>
			  </div>
			     <div class="more" onclick="add_ask($(this))">&nbsp;</div>
					</td>

		</tr>

 </table>

通过这个上面这HTML结果,然后通过JS 实现

function add_ask($this)
{
 var $Word ="";
   //获取前面div层数
 var $div_num = $this.prev().children().attr("id");
   //增加图层
 var $div_next_num = Number($div_num)+1;

 var  $last_children_name = $this.prev().children().last().children().last().attr("name").charCodeAt();

  var $html = "<div style=\"float:left;\" id="+$div_next_num+">";
   //进行四次循环
  if($last_children_name+4 <= 90)
  {
   for(var $i=1;$i<=4;$i++)
   {
	 $Word = String.fromCharCode($last_children_name + $i);
	 $html += $Word+":<input type=\"text\" class=\"mimi\" name="+$Word+" />";
   }
  }else
  {
	 $end = 90 - $last_children_name;
	 for(var $i=1;$i<=$end;$i++)
    {
	 $Word = String.fromCharCode($last_children_name + $i);
	 $html += $Word+":<input type=\"text\" class=\"mimi\" name="+$Word+" />";
    }
  }
   $html += "</div>";

  $this.prev().append($html);
}

上面的JS 是通过jquery实现,原理很简答,我就不说太多了。
巧妙的地方就是通过assic码数字转换来实现选项增加。

2 thoughts on “JS动态添加选项

发表评论

电子邮件地址不会被公开。 必填项已用*标注

(Spamcheck Enabled)