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

How to access key/value data from form.submit()?

本文关键字:访问 数据 form submit      更新时间:2023-09-26

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

您可以使用jQuery选择器通过其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();       
}