jQuery serializeArray没有拾取动态创建的表单元素

我有一个使用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创建的任何内容。

我知道通常可以使用“实时”解决此问题,但是我不清楚如何使用来解决此问题serializeArray()。使用Ajax会将其他表单元素添加到中,#customSearchTable而这些元素是未被选择的。

任何帮助,不胜感激。

谢谢

回答:

我将在这里进一步说明评论:

当您调用.serializeArray()它时,它就像<form>提交一样或尽可能接近地循环遍历,以获取要提交的元素。关键部分在这里:

.filter(function() {

return this.name && !this.disabled &&

(this.checked || rselectTextarea.test(this.nodeName) ||

rinput.test(this.type));

})

就像<form>提交将不包含没有name属性的元素一样,.filter()using

的调用this.name将过滤掉那些要序列化的元素。

以上是 jQuery serializeArray没有拾取动态创建的表单元素 的全部内容, 来源链接: utcz.com/qa/412984.html

回到顶部