如何从form.submit()访问键/值数据?

时间:2015-07-14 08:22:58

标签: javascript jquery

在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知识是有限的,我想知道是否有更常用的更好的方法?

1 个答案:

答案 0 :(得分:0)

您可以使用jQuery selectors通过nameid属性引用任何表单字段,并使用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();       
}