【问题标题】:jQuery: Persisting form values before serialize?jQuery:在序列化之前持久化表单值?
【发布时间】:2012-07-03 03:21:52
【问题描述】:

我正在使用 jQuery serialize() 函数在表单中收集数据并使用 jQuery Ajax“post”方法提交到服务器,如下所示:var params = jQuery('#mainContent form').serialize();
我看到的奇怪的事情是我表单中的序列化数据包含旧数据。这意味着,我对表单的所有更改(输入到文本字段,在组合框上选择)都不会存储到 DOM,所以当 jQuery 调用 serialize() 时,它会收集在我更改表单之前出现的旧数据。我试图检查该表单中的每个元素并调用.val(),它仍然显示旧值。
那么如何将我的所有更改保留到表单中,serialize() 方法可以使用我输入的最新数据构建字符串?
这是我的 sn-p 代码,我在提交处理程序中调用了serialize()

jQuery('.myFormDiv input.submit').click(function() {  
    // Do something  
    // Collect data in form  
    var params = jQuery('#mainContent form').serialize();  
    // Submit to server  
    jQuery.post(url, params, successHandler);  
}

非常感谢。

【问题讨论】:

  • 您可以将您的代码(或简化版本)上传到 jsfiddle 吗?
  • 你打电话给$(document).ready吗?

标签: javascript jquery serialization


【解决方案1】:

你什么时候调用序列化?它应该是 $('form').submit( [这里] );听起来它是在页面加载时调用的,在您将值输入字段之前,然后在之后使用。

编辑:

使用submit event 而不是点击会捕捉到有人在文本字段中按回车键。

jQuery('#mainContent form').submit(function() {  
  // Collect data in form  
  var params = jQuery(this).serialize();  
  // Submit to server  
  jQuery.post(url, params, successHandler);  
}

*以上代码假设 url 是定义的,successHandler 是一个函数。

【讨论】:

  • 虽然最好使用表单的提交事件而不是提交按钮的点击事件,但它不太可能对序列化表单中的值产生任何影响——点击之间不会发生太多提交按钮和正在提交的表单。虽然它会确保 OP 不会从按钮提交错误的表单,因为选择器不同。
  • @RobG 确实如此。正如我所说,这听起来像是在页面加载或之前的某个时间点调用了序列化。只是举一个完整的例子来说明我提到的做法。
猜你喜欢
  • 2015-02-27
  • 1970-01-01
  • 1970-01-01
  • 2012-08-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-01
相关资源
最近更新 更多