2 u013400939 u013400939 于 2015.07.14 17:14 提问

jquery如何根据文本框中输入的数,实现数组循环

实现了点击添加选项增加行,但是每次增加一行都要用一个else if,所以在后面我增加了一个

 最多<input type="text" name="maxnum" style="width: 4%"/>项

用来输入本次添加选项需要设置多少项,超出就做出提示,做了很久还是做不出来,菜鸟求助各位

 <script>
 function del(t){
     $(t).parent('div').remove();
}
function add(){
     var lastInput = $('#contain input:last');
     var phName = lastInput.attr('placeholder');
     var maxNum = $("#maxnum").val();

     phName = phName.replace("选项","");
     if(phName=='1'){
          phName='2'
     }else if(phName=='2'){
          phName='3'
     }else if(phName=='3'){
          phName='4'
     }else if(phName=='4'){              **_  //这部分如何用数组循环实现_**
          phName='5'
     }else if(phName=='5'){
          phName='6'
     }
     $('<div class="inputs"><input input type="text" id="commentx" name="comment" maxlength="30" style="width: 80% "  placeholder="选项'+phName+'" /><span onclick=del(this)>删除</span></div>').insertAfter(lastInput.parent('div'));
}
</script>
 <tr id="tr">
        <td class="table_th" >题目选项:        
        <td width="" id="contain">
              <div class='inputs'>
              <input type="text" id="comment" name="comment"
            maxlength="30" style="width: 80%"  placeholder="选项1"/><font
          color="red"> *</font></div>

              <div class='inputs'><input type="text" id="title" name="title"
            maxlength="30" style="width: 80%"" placeholder="选项2" />&nbsp;</div>

              <div class='inputs'><input type="text" id="commentx" name="comment"
            maxlength="30" style="width: 80% " " placeholder="选项3" /><span  onclick=del(this)>删除</span></div>

              <div class='inputs'><input type="text" id="commentx" name="comment"
            maxlength="30" style="width: 80% "  placeholder="选项4" /><span  onclick=del(this)>删除</span></div>

            <div><a href="javascript:;" class="addRow" id="addRow" onclick="javascript:add()">+添加选项</a></div>

            </td>
    </tr>

        <tr>
            <td class="table_th">选择模式:</td>
            <td width="">
            最多<input type="text" id="maxnum" name="maxnum" style="width: 4%"/>项
            </td>
        </tr>

6个回答

danielinbiti
danielinbiti   Ds   Rxr 2015.07.14 21:44
已采纳
 <!DOCTYPE html> 
<html>
<head> 
    <script src="http://lib.sinaapp.com/js/jquery/1.8.3/jquery.min.js"></script>

</head> 
<script>
    function del(t){
         $(t).parent('div').remove();
    }
    function add(){
         var val = $('#maxnum').val();
         if(!val){
              alert('请填写最多项');
              return;
         }
         var lastInput = $('#contain input:last');
         var phName = lastInput.attr('placeholder');
         phName = phName.replace("选项","");
         phName = parseInt(phName,10)+1;
         if(parseInt(val,10)>=parseInt(phName,10)){
              $('<div class="inputs"><input input type="text" id="commentx" name="comment" maxlength="30" style="width: 80% "  placeholder="选项'+phName+'" /><span onclick=del(this)>删除</span></div>').insertAfter(lastInput.parent('div'));
         }else{
             alert('超出了最大项');
         }
    }
</script>
<body> 
    最多<input type="text" id='maxnum' name="maxnum" style="width: 4%"/>项
    <table id="table_items" class="hovertable" style="width: 100%;" cellspacing="0"
    cellpadding="0">
    <tr id="tr">
        <td class="table_th" >题目选项:        
        <td width="" id="contain">
              <div class='inputs'>
              <input type="text" id="comment" name="comment"
            maxlength="30" style="width: 80%"  placeholder="选项1"/><font
          color="red"> *<span  onclick=del(this)>删除</span></font></div>
            <div><a href="javascript:;" class="addRow" id="addText" onclick="javascript:add()">+添加选项</a></div>

            </td>
    </tr>
    </table>
</body> 
</html> 
u013400939
u013400939 膜拜 膜拜 膜拜 你就是及时雨啊
2 年多之前 回复
bpanyiwei
bpanyiwei   2015.07.14 21:38

一楼那样的修改应该是可以的。
1.题目选项: 后面缺少td结尾标签
2.另外input的id不能总是commentx,要在commentx后面加上数字,以示区别。

 function add(){
     var lastInput = $('#contain input:last');
     var phName = lastInput.attr('placeholder');
     var maxNum = $("#maxnum").val();
         var inputArr= $('#contain').find('input');
         var count=inputArr.length;
         if(count>=maxNum*1){
             alert("已经达到最多项了。");
             return false; 
        }

     phName = phName.replace("选项","");

     $('<div class="inputs"><input input type="text" id="commentx'+(++parseInt(phName))+'" name="comment" maxlength="30" style="width: 80% "  placeholder="选项'+(++parseInt(phName))+'" /><span onclick=del(this)>删除</span></div>').insertAfter(lastInput.parent('div'));
}
u013400939
u013400939 哦是的ID要改的谢谢你
2 年多之前 回复
u011376884
u011376884   2015.07.14 17:53
 placeholder="选项'+(++parseInt(phName))+'"

改一下就行了

 if(phName=='1'){
          phName='2'
     }else if(phName=='2'){
          phName='3'
     }else if(phName=='3'){
          phName='4'
     }else if(phName=='4'){              **_  //这部分如何用数组循环实现_**
          phName='5'
     }else if(phName=='5'){
          phName='6'
     }
        //这一段if判断全删掉
u013400939
u013400939 $('<div class="inputs"><input input type="text" id="commentx" name="comment" maxlength="30" style="width: 80% " placeholder="选项'+(++parseInt(phName))+'" /><span onclick=del(this)>删除</span></div>').insertAfter(lastInput.parent('div'));改动后任然不成功
2 年多之前 回复
danielinbiti
danielinbiti   Ds   Rxr 2015.07.14 18:03

... ...阿拉伯数字的加一就行了,中文的数字得用数组。改用阿拉伯数字就简单。

u013400939
u013400939 求解救
2 年多之前 回复
u013400939
u013400939 大神,你终于又来了,我已经崩溃了,怎么改都不成功,快帮帮我把,哪里改成阿拉伯数字?这样也不成功啊placeholder="选项'+(++parseInt(phName))+'"
2 年多之前 回复
showbo
showbo   Ds   Rxr 2015.07.14 21:43

获取已存在的总个数就好了。。


    function del(t){
        var dv = $(t).parent('div');
        dv.nextAll().find('input').attr('placeholder', function () { return '选项' + (parseInt(this.getAttribute('placeholder').replace('选项', ''), 10) - 1); });//重设后续的选项数字
        dv.remove();
    }
    function add(){
        var lastInput = $('#contain input:last');
        var maxNum = parseInt($("#maxnum").val())||6;//没填写最多默认6
        var nextId = $('#contain div.inputs').length+1;
        if (nextId > maxNum) { alert('超过最大项'+maxNum);return false}
        $('<div class="inputs"><input input type="text" id="commentx" name="comment" maxlength="30" style="width: 80% "  placeholder="选项'+nextId+'" /><span onclick=del(this)>删除</span></div>').insertAfter(lastInput.parent('div'));
    }
u012401478
u012401478   2015.07.15 08:53

一楼那样的修改应该是可以的。
1.题目选项: 后面缺少td结尾标签
2.另外input的id不能总是commentx,要在commentx后面加上数字,以示区别。

+++++++11111111111111

Csdn user default icon
上传中...
上传图片
插入图片