首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >无法使用JavaScript和jQuery创建具有不同id的多个文本框

无法使用JavaScript和jQuery创建具有不同id的多个文本框
EN

Stack Overflow用户
提问于 2016-11-04 13:50:26
回答 1查看 59关注 0票数 0

我无法使用JavaScript和jQuery动态创建多个文本字段。我的代码如下:

代码语言:javascript
复制
<div class="col-md-3">
    <div class="form-group">
      <label for="ques">No of questions</label>
      <input name="no_of_question" id="ques" class="form-control" placeholder="no of question" type="text">
    </div>
  </div>
  <div class="row">
    <div class="col-md-8">
      <div class="form-group">
        <label>Questions</label>
        <input type="button" style="line-height:13px; margin-right:2px;" class="btn btn-success btn-sm" name="plus" id="plus" value="+" onClick="addQuestionField();">
        <input type="button" style="line-height:13px; margin-right:2px;" class="btn btn-danger btn-sm" name="minus" id="minus" value="-" onClick="deleteQuestionField();">
      </div>
      <div class="text-left" id="intro-add" style="display:none">
        <input type="button" name="" class="btn btn-sm btn-info" value="Add">
      </div>
    </div>

  </div>
  <div id="container">
    <div class="form-group" style="margin-top:5px;display:block" id="introBox0" >
      <div>
        <input type="text" style="width: 77.5%;float:left; margin-bottom:5px; margin-right:5px;" class="form-control inptbox0" id="scaleans00" name="labelname" placeholder="Answer" value="">
       <input type="button" style="line-height:13px; margin-right:2px; margin-top:5px; float:left;" class="btn btn-danger btn-sm" name="labelminus" id="labelminus" value="-">
        <div class="text-left" id="intro-add" style="display:block">
          <input type="button" name="" class="btn btn-sm btn-info" value="Add" onclick="addMore(0,0)">
        </div>
      </div>
    </div>
  <hr>
  </div>

在这里,用户将创建多个问题部分,每个问题部分用户必须创建多个字段使用add按钮,并将删除使用minus按钮。每个问题字段应该是唯一的id.Suppose在第一部分有3个输入字段,那么它的ids应该是这样的scaleans00,scaleans01,scaleans02...和第二部分这些应该是scaleans10,scaleans11,scaleans12...,依此类推。

下面是我的JavaScript代码:

代码语言:javascript
复制
<script>
    function addQuestionField() {
      var get = $("#ques").val();
      for (var i = 1; i < get; i++) {
        $('#container').append('<div class="form-group dyn" style="margin-top:5px;display:block" id="introBox'+i+'"><div><input type="text" style="width: 77.5%;float:left; margin-bottom:5px; margin-right:5px;" class="form-control inptbox'+i+'" id="scaleans'+i+'0" name="labelname" placeholder="Answer" value=""><input type="button" style="line-height:13px; margin-right:2px; margin-top:5px; float:left;" class="btn btn-danger btn-sm" name="labelminus" id="labelminus" value="-"><div class="text-left" id="intro-add" style="display:block"><input type="button" name="" class="btn btn-sm btn-info" value="Add" onclick="addMore('+i+',0)"></div></div></div><hr>');
      }
    }

    function deleteQuestionField() {
      var textareas = $('#container .dyn');
      if (textareas.length !== 0) {
        textareas.last().remove();
        $('#ques').val(textareas.length - 1);
      }
    }
      function addMore(parent,child){
           var mainDiv='#introBox'+parent;
           $(mainDiv).append('<div><input type="text" style="width: 77.5%;float:left; margin-bottom:5px; margin-right:5px;" class="form-control inptbox'+parent+'" id="scaleans" name="labelname" placeholder="Answer" value="">'+'<input type="button" style="line-height:13px; margin-right:2px; margin-top:5px; float:left;" class="btn btn-danger btn-sm" name="labelminus" id="labelminus" value="-"></div>');
          repopulate(parent);
      }
      function repopulate(k){
          var mainId='.inptbox'+k;
          var j=0;
          $(mainId).each(function(i, e) {
              if(i==0){
                   $(this).attr('id', 'scaleans' + i+j);
                  $(this).next().attr('onClick', function(old, n) {
                       return 'removeThis(' + i + ','+j+')';
                  })
                  $(this).next().attr('id', function(old, n) {
                    return 'labelminus' + i+j;
                 });
              }else{
                  $(this).attr('id', 'scaleans' + i+(j+1));
                  $(this).next().attr('onClick', function(old, n) {
                       return 'removeThis(' + i + ','+(j+1)+')';
                  })
                  $(this).next().attr('id', function(old, n) {
                    return 'labelminus' + i+(j+1);
                 });
              }
          })
      }
      function removeThis(r,t) {
            $("#scaleans" + r+t).remove();
            $("#labelminus" + r+t).remove();
            repopulate();
     }
  </script>

在这里我不能按照我的要求创建。Here is my full code

EN

回答 1

Stack Overflow用户

发布于 2016-11-04 14:13:54

我将向您解释您放在Plunker中的当前代码是怎么回事

代码语言:javascript
复制
function addQuestionField() {
    var get = $("#ques").val();
      for (var i = 1; i < get; i++) {

在addQuestionFiled()方法中,如果没有将任何值输入到

问题数

文本字段。因此,不会追加html。

填入问题的数量为2,然后单击添加它将保持将html附加到容器div,因为'var get‘的值将为2,'var i’小于'var get‘

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40416096

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档