gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 14:59:47 24 4
gpt4 key购买 nike

我有一个使用 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> 一样循环submission would or as close as possible anyway,以获取要提交的元素。关键部分is here :

.filter(function() {
return this.name && !this.disabled &&
(this.checked || rselectTextarea.test(this.nodeName) ||
rinput.test(this.type));
})

就像一个<form>提交不会包含没有 name attribute 的元素, .filter() 使用 this.name 调用将从要序列化的元素中过滤出这些元素。

关于jQuery serializeArray 没有获取动态创建的表单元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3626384/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com