jQuery:从带有 for 循环的数组动态构建表单

jQuery: building a form dynamically from an array with a for loop

本文关键字:数组 动态 构建 表单 循环 for jQuery      更新时间:2023-09-26

我有一个jQuery函数,它接收div元素和json数组的id

function FormBuilder(selector,myList){
    for (var i = 0 ; i < myList.length ; i++) {
        var rowHash = myList[i];
        if(rowHash['id'] > 0 ){
            $(selector).append('<form id="DialerInfo">');
            for (var key in rowHash) {
                $(selector).append(key +': <input type="text" name="' + key + '" value="' + rowHash[key] + '"><br/>');
            }
            $(selector).append('</form>');
        }
    }
}

我希望这会构建一个正确的形式,即所有输入都应该在 <form></form> 标签之间。但我收到的东西完全不同:
先行
<form id="DialerInfo"></form> 然后在所有输入字段下方。为什么它们在表单标签之外?jQuery会自动关闭所有标签吗?那么如何防止这种行为呢?

使用 jQuery 创建 DOM 不像字符串连接那样工作

您可以创建一个表单并将所有元素附加到其中

function FormBuilder(selector, myList) {
  var $form = $('<form id="DialerInfo"></form>').appendTo(selector);
  for (var i = 0; i < myList.length; i++) {
    var rowHash = myList[i];
    if (rowHash['id'] > 0) {
      for (var key in rowHash) {
        $form.append(key + ': <input type="text" name="' + key + '" value="' + rowHash[key] + '"><br/>');
      }
    }
  }
}

//use

$.each(arrayorJSON,function(KEY,VALUE){
    //YOUR CODE HERE
}) 

它是一个jQuery循环器,它接受数组和json值,并与所有浏览器兼容,而不是for循环