【发布时间】:2011-04-07 06:49:26
【问题描述】:
我有一个使用 ajax 动态创建的表单(因为表单元素的数据必须来自数据库),我想序列化表单的元素以通过 ajax 提交。我目前只是使用 jQuery 网站上的代码测试我的理论,看看我是否可以获取表单元素,这就是问题所在:
$(document).ready(function() {
$('#btnCustomSearch').live('click', function() {
$('#results').html('');
alert($('#customSearchTable :input').serializeArray());
// get all the inputs into an array.
var fields = $('#customSearchTable :input').serializeArray();
jQuery.each(fields, function(i, field) {
$("#results").append(field.name + " = " + field.value + ", ");
});
// now we'll reformat the data as we need
// here we'll send the data via ajax
});
});
我需要在提交之前对数据进行一些更改,此代码尚未编写,但我发现页面加载时存在的页面上的任何输入元素都被正确拾取,任何使用 Javascript 填充的元素被正确拾取,但任何使用 ajax 创建的元素都会被忽略。
我知道这通常可以使用“live”解决,但我不清楚如何使用serializeArray() 解决此问题。使用 Ajax 将额外的表单元素添加到 #customSearchTable 中,这些是没有被拾取的。
任何帮助都非常感谢。
谢谢
【问题讨论】:
-
此方法不关心元素何时添加,似乎它们没有正确添加为表单元素,您可以发布该代码吗?例如,他们是否有
name属性? -
尼克,非常感谢,你是对的,动态生成的表单元素缺少 name 属性.... DOH!!!非常感谢!!
-
FML - 1 小时后:/
标签: jquery html ajax forms serializearray