循环数组,添加输入文本框,然后设置这些文本框的值。

4

我正在尝试循环并根据存储在数组中的值附加多个容器,然后相应地设置这些值,但是我目前正在复制这些值,并且无法使值在每次循环时不同。

var arr_tele = ['02991812376', '02982919291'];

//Prevent Duplicates.
$(".teledivcontain").remove();

//Append Container for numbers
$("#telediv").append('<div class="form-group col-md-3" id="teledivcontain"> </div>');

//Loop and append fields for each number
for (i in arr_tele) {
  $("#teledivcontain").append('<input type="text" class="form-control telenumber" placeholder="No number currently" disabled><div class="form-group col-md-3"><button type="submit" class="btn btn-primary form-control detach">Detach</button></div>').find('input:text').val(arr_tele[i]);
}
.fieldpos {
  margin-left: 45px;
  width: 40%;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<div class="panel-body row fieldpos">
  <fieldset class="form-group">
    <label for="telenum">Your Telephone Numbers</label>
    <div class="row">
      <div id="telediv">
      </div>
    </div>
  </fieldset>
</div>

我缺少一些细节,但是不知道是什么,有人有任何想法吗?
2个回答

2

您需要找到最后添加的输入,然后分配该值,因此只需添加:last选择器即可完成工作:

.find('input:text:last').val(arr_tele[i])

或者你可以直接使用<input value="'+arr_tele[i]+'" ... 赋值。

希望这有所帮助。

var arr_tele = ['02991812376', '02982919291'];

//Prevent Duplicates.
$(".teledivcontain").remove();

//Append Container for numbers
$("#telediv").append('<div class="form-group col-md-3" id="teledivcontain"> </div>');

//Loop and append fields for each number
for (i in arr_tele) {
  $("#teledivcontain").append('<input type="text" class="form-control telenumber" placeholder="No number currently" disabled><div class="form-group col-md-3"><button type="submit" class="btn btn-primary form-control detach">Detach</button></div>').find('input:text:last').val(arr_tele[i]);
}
.fieldpos {
  margin-left: 45px;
  width: 40%;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<div class="panel-body row fieldpos">
  <fieldset class="form-group">
    <label for="telenum">Your Telephone Numbers</label>
    <div class="row">
      <div id="telediv">
      </div>
    </div>
  </fieldset>
</div>


我认为这是我的答案的等价物... :p - Nick Bull
2
抱歉,没有看到!+1 修复 jQuery。 - Nick Bull

1
只需将其作为要添加的HTML属性即可。请注意在循环内'<input type="text" ... value="' + arr_tele[i] + '"disabled>中:

var arr_tele = ['02991812376', '02982919291'];

//Prevent Duplicates.
$(".teledivcontain").remove();

//Append Container for numbers
$("#telediv").append('<div class="form-group col-md-3" id="teledivcontain"> </div>');

//Loop and append fields for each number
for (i in arr_tele) {
  $("#teledivcontain").append('<input type="text" class="form-control telenumber" placeholder="No number currently" value="' + arr_tele[i] + '"disabled><div class="form-group col-md-3"><button type="submit" class="btn btn-primary form-control detach">Detach</button></div>');
}
.fieldpos {
  margin-left: 45px;
  width: 40%;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<div class="panel-body row fieldpos">
  <fieldset class="form-group">
    <label for="telenum">Your Telephone Numbers</label>
    <div class="row">
      <div id="telediv">
      </div>
    </div>
  </fieldset>
</div>


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接