在for循环中分配输入值

时间:2015-04-09 02:03:40

标签: javascript jquery html forms

我有一个哈希,并希望获取每个值并将它们放在文本字段中。我现在写出的一个问题是,这些值在HTML中是硬编码的,因此如果用户在文本字段中进行更改,则在提交表单时将忽略它们。有没有什么方法可以从哈希中插入数据而不将它们显式写为value属性但仍然可以在提交时处理?

HTML

<form action="">
  <table></table><br />
  <input type="submit" />
</form>

JS

var data = [{name: "Object One", num: 1}, {name: "Object Two", num: 2}, {name: "Object Three",num: 3}];

for (var i = 0; i < data.length; i++) {
  var dataNum   = "<td><input type='text' value='" + data[i]["num"] + "'></td>",
      dataName  = "<td><input type='text' value='" + data[i]["name"] + "'></td>";
  var $tr = "<tr>" + dataNum + dataName + "</tr>";

  $("table").append($tr);
}

1 个答案:

答案 0 :(得分:0)

您的脚本按预期工作(至少我理解您的意图)。我必须为每个输入添加名称属性,我使用迭代器创建不同的输入。我不确定您使用哪种语言来处理表单,但我知道有些语言会收到一个具有相同名称的属性列表(&name=Jeff&name=Jon&name= ...)。

var dataNum   = "<td><input type='text' name='num" + [i] + "' value='" + data[i]["num"] + "'></td>"

我还在提交按钮上附加了一个点击处理程序,以显示它是否有效。 value属性是填充表单初始值所必需的。如果在呈现表单后更改了值,则更改的值将与表单一起提交。

使用此fiddle对其进行测试。

我不确定您为什么要在DOM中避免value=""。您可以这样做,但是您必须在表单呈现后设置值,方法是创建另一个遍历每一行的循环,遍历该行的每个单元格,然后显示设置值。

地图的结构肯定会改变。它会添加额外的代码,完全没必要。