gpt4 book ai didi

javascript - 如何迭代提交时传递的 knockout 表单元素

转载 作者:行者123 更新时间:2023-12-02 16:15:00 25 4
gpt4 key购买 nike

我有一个表单,我想使用 Knockout 以正常方式提交,将其绑定(bind)到一个函数,而不是访问像

这样的元素
 var value = form.element 

我想迭代表单元素。在访问这些元素之前,表单对象似乎并不包含这些元素,那么在不知道它们的 id 的情况下如何迭代它们呢?我想避免数字 id 和 for 循环。
这是我所拥有的不起作用的内容:

 saveChanges: function(form) {
form.each(function( element ) {
//do something
});

表单对象的 console.log() 的输出有些奇怪,例如:

 {"0":{},"1":{"__ko__1429589442426":"ko66"},     
"2":{"__ko__1429589442426":"ko74"},
"3":{"__ko__1429589442426":"ko79"},
"4":{},"__ko__1429589442426":"ko60"}

有什么建议吗?

编辑:为什么我需要这样做?

我的表单元素来 self 的 api,它是用强类型语言编写的。每个“首选项”都有“booleanvalue”、“numericvalue”、“stringvalue”值和首选类型“bool”、“numb”或“stri”。调用 api 时,我会取回所有值,然后使用 knockout 的 if: 绑定(bind)仅显示首选值。

API返回示例:

[{"type":"bool","stringvalue":null,"preference":"taxable","numericvalue":"0","id":3,"booleanvalue":true},{"type":"stri","stringvalue":"Acme inc.","preference":"company_name","numericvalue":"0","id":2,"booleanvalue":false}]

当我收集表单输入onsubmit时,我需要获取首选项的名称和列名称、 bool 值、字符串值、数值。我通过设置 id 属性来包含信息来完成此操作,以便我可以解析 id 键以获取列名称,并将该值用作列值。这是一个例子:

id= company_name.stringvalue value= "acme co."

id= taxable.booleanvalue value= "true"

id= tax_rate.numericvalue value= "0.0112"

这是在 Durandal 应用程序内部,所以 fiddle 不起作用,但你可以看到我的 html/js。 https://jsfiddle.net/ggja7qv2/

我没有对这些进行硬编码的原因是因为我将来会从 api 添加更多首选项,并且我希望前端能够编辑这些首选项,而无需返回到其中进行更改。前端应以

的形式将 JSON 发送到 api
{"data":[{"preference":"company_name","stringvalue":"acme inc"},{"preference":"taxable","booleanvalue":"false"}]}

最佳答案

您可以使用jquery:

$(form).find('input')

这将为您返回所有表单元素。

OTOH,请不要将信息存储在 ID 中。您可以使用 data- 属性,每一条信息对应一个属性,然后以这种方式读取它们:

$(form).find('input')[0].attr('data-booleanvalue')

生成的输入应如下所示:

<input type="...." data-booleanvalue="true" ... />

关于javascript - 如何迭代提交时传递的 knockout 表单元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29762886/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com