在Rails应用程序中,我使用jquery拦截表单提交并对数据执行某些功能。
表单响应类似于以下内容:
"object"=>{"parent_id"=>"1", "array_of_strings"=>["string1", "string2", ......]}
我需要获取parent_id
,然后获取array_of_strings
$('#myForm').submit ->
$this = $(this)
dataArray = $this.serializeArray()
i = 0
while i < dataArray.length
if dataArray[i].name == 'object[parent_id]'
parent = dataArray[i].value
i += 1
i = 0
while i < dataArray.length
if dataArray[i].name == 'object[array_of_strings][]'
string = dataArray[i].value
//do something with parent and string
i += 1
这是最好的方法吗?迭代整个表单响应以访问键/值似乎过于复杂。我的jquery / javascript知识是有限的,我想知道是否有更常用的更好的方法?
答案 0 :(得分:0)
您可以使用jQuery selectors通过name
或id
属性引用任何表单字段,并使用jQuery的val()
函数修改字段值以检索或设置表单字段值。我编写了一个完整的示例,演示了如何在表单提交时检索和修改表单值,然后最终将它们(已修改)传递给服务器。当然,这不是你能做到的唯一方法。
var form = $("#myForm");
var parentIdField = form.find("[name=parentId]");
var someOtherField = form.find("[name=sameOtherField]");
form.on("submit",modifyFormFieldsAndSubmit);
function modifyFormFields(submitEvent) {
// retrieve field value
var parentIdFieldValue = parentIdField.val();
// modify parentIdFieldValue ... and set it back to field
parentIdField.val("someNewValue");
// do the same for other fields you want to modify ...
// finally submit modified fields values to server
// note that 'form' reference jQuery extended form and 'form[0]'
// reference underlying HTML form element
form[0].submit();
}