1

我在 JS 中有一个对象:

var myFormObject= {};
MyFormObject.Name1 = "asdasd";
MyFormObject.Name2 = "aaa21";
MyFormObject.Name3 = "sadasd";
MyFormObject.SomethingElse= 111;

我有一个表格:

<form id="myForm">
   <input name="Name1" type="text"/>
   <input name="Name2" type="text"/>
   <input name="Name3" type="text"/>
   <input name="SomethingElse" type="text"/>
</form>

我想完成myForm存储在myFormObject. 像这样的东西:

  $("#myForm").Complete(myFormObject)

我知道我可以通过input“手动”访问我的表单中的每一个并用 中的数据完成它JS-object,但是有更优雅的方法吗?当我有 100 个输入的表单并且对象从server-side

感谢您的任何提前。

4

3 回答 3

1

使用您正在使用的当前命名模式,您可以遍历并在 for 循环中设置值。

var nt = 100;
var n;
for(var i = 1; i < nt; i++) {
    n = "Name" + i;
    $('input[name="' + n + '"]').val(MyFormObject[n]);
}

但是,为了提高性能,您可以修改表单以包含 ID(它甚至可以遵循 Name1、Name2 等模式),然后修改 for 循环。

var nt = 100;
var n;
for(var i = 1; i < nt; i++) {
    n = "Name" + i;
    $('#' + n).val(MyFormObject[n]);
}
于 2013-08-15T12:20:27.330 回答
0

我现在无法提供代码示例,但这是我会尝试的方式。

您可以编写如下循环:

each input in #myForm:
    complete input with object[input.attr(name)]

让我知道这是否对您有所帮助,否则我稍后会编写一些测试代码。

于 2013-08-15T12:14:28.870 回答
0

jQueryUI 有一个用于自动完成的内置小部件,它可以处理多个输入字段,例如:http: //jsfiddle.net/dqN7F/

HTML:

<div class="ui-widget">
    <input class="tags" />
</div>
<div class="ui-widget">
    <input class="tags" />
</div>

JS:

$(function () {
     var availableTags = [
         "ActionScript",
         "and",
         "so",
         "on"];
     $(".tags").autocomplete({
         source: availableTags
     });
 });

有关更多选项(可滚动建议、建议的 ajax 加载等),请查看文档:http: //jqueryui.com/autocomplete/

于 2013-08-15T12:20:48.897 回答