如何将表单值存储在 data() 对象中?

Posted

技术标签:

【中文标题】如何将表单值存储在 data() 对象中?【英文标题】:How to store form values in data() object? 【发布时间】:2010-10-20 06:51:07 【问题描述】:

有没有一种简单的方法可以在提交后将表单数据存储在data() 对象中?

假设这是我的表单:

<form id='myform'>  
<input type='text' name='bar' value='lorem'/>  
<input type='text name='foo' value='ipsum'/>  
</form>

提交后数据应该这样存储:

$("#myform").data('bar','lorem');  
$("#myform").data('foo','ipsum');

【问题讨论】:

只是让你知道,我刚刚找到了一个 jQuery 方法:form.serialize()。我用一些新信息更新了我的帖子。 【参考方案1】:

你可以这样做:

$('#myform').submit(function(e) 
    e.preventDefault(); // don't submit the form
    var form = $(this); // store it for later reference
    form.children('input').each(function() 
        form.data($(this).attr('name'), $(this).attr('value'));
    );
);

编辑:我的代码有一些错误(getChildren » children, myform » #myform)——我现在已经更正了。

请注意,此脚本不会提交表单。您可以添加some nifty ajax 来做到这一点:) http://docs.jquery.com/Ajax/serialize

更新:实际上,jQuery 已经内置了这个功能:form.serialize()。它返回一个有效的查询字符串:

<form id="myForm">
    <input type="radio" value="A" name="foo" checked="checked" /> A<br />
    <input type="radio" value="B" name="foo" /> B
    <input type="text" name="bar" value="Bla bla" />
</form>
<script>
var queryString = $('#myForm').serialize(); //foo=A&bar=Bla+bla
</script>

【讨论】:

这不处理选择和文本区域,也不处理通过按钮/图像提交的表单。它也没有解决状态/选择 - 没有提到,但我猜 OP 只需要 selected 单选和复选框值,而不是所有值 - 在任何一种情况下,值都需要是列表还是数组? 你是对的,但我只是将 bartclaeys 指向正确的方向(恕我直言)。不过,我会尽快更新代码。 谢谢莫夫!仍然需要大量代码(如果我想添加选择等)。以为周围有类似 SerializeToDataObject 的东西。

以上是关于如何将表单值存储在 data() 对象中?的主要内容,如果未能解决你的问题,请参考以下文章

如何将 JS 对象存储在 cookie 中

如何获得单个数据条目的预测

如何将 NSMutableString 转换为 double 以存储在 Core Data 中?

XSLT 通用将结构值类型转换为单值字符串

我正在尝试将复杂复选框表单的值存储在 mysql 数据库中

如何将 Twitter ID 存储在 Core Data 对象中