gpt4 book ai didi

jQuery序列化如何消除空字段

转载 作者:行者123 更新时间:2023-11-30 23:47:07 26 4
gpt4 key购买 nike

在此表单中,用户可以添加一些作者信息(音乐、歌词作者)

用户可以选择添加 1 位或更多作者。

问题是,当用户仅输入 1 个作者时,所有其他输入都保持为空,但 jQuery 序列化函数无论如何都会将它们放入 URL 中,并且服务器会给出以下错误:

Request-URI Too Large

请参阅下面的示例:

echo "<form action=\"\" id=\"submForm\" name=\"submForm\" method=\"get\">";
// AUTHOR NUMBER 1
echo "<p><span class=\"labelInput\">".(_t('_cR_name'))." </span><input id=\"nameAuthor\" name=\"author[0][name]\" value=\"\" type=\"text\" class=\"commonInput\"></p>";
echo "<p><span class=\"labelInput\">".(_t('_cR_DOB'))." </span><input id=\"DOBAuthor\" name=\"author[0][DOB]\" value=\"\" type=\"text\" class=\"littleInput\"></p>";
echo "<p><span class=\"labelInput\">".(_t('_cR_DOD'))." </span><input id=\"DODAuthor\" name=\"author[0][DOD]\" value=\"\" type=\"text\" class=\"littleInput\"></p>";
// AUTHOR NUMBER 2
echo "<p><span class=\"labelInput\">".(_t('_cR_name'))." </span><input id=\"nameAuthor\" name=\"author[1][name]\" value=\"\" type=\"text\" class=\"commonInput\"></p>";
echo "<p><span class=\"labelInput\">".(_t('_cR_DOB'))." </span><input id=\"DOBAuthor\" name=\"author[1][DOB]\" value=\"\" type=\"text\" class=\"littleInput\"></p>";
echo "<p><span class=\"labelInput\">".(_t('_cR_DOD'))." </span><input id=\"DODAuthor\" name=\"author[1][DOD]\" value=\"\" type=\"text\" class=\"littleInput\"></p>"; Death:
// AUTHOR NUMBER 3
echo "<p><span class=\"labelInput\">".(_t('_cR_name'))." </span><input id=\"nameAuthor\" name=\"author[2][name]\" value=\"\" type=\"text\" class=\"commonInput\"></p>";
echo "<p><span class=\"labelInput\">".(_t('_cR_DOB'))." </span><input id=\"DOBAuthor\" name=\"author[2][DOB]\" value=\"\" type=\"text\" class=\"littleInput\"></p>";
echo "<p><span class=\"labelInput\">".(_t('_cR_DOD'))." </span><input id=\"DODAuthor\" name=\"author[2][DOD]\" value=\"\" type=\"text\" class=\"littleInput\"></p>";
echo "</form>";

这是 jQuery 代码(它还包括一个验证函数,我使用的是 jQuery 1.3.2)

echo "<script type=\"text/javascript\">
$(document).ready(function() {
$('#submForm').validate({
submitHandler: function(form) {
var serialized = $('#submForm').serialize()
$.get('".$site['url']."modules/yobilab/copyright/classes/DO_submission.php', serialized);
window.setTimeout('location.reload()', 8000);
return false;
form.submit();
}
})
});

现在假设用户将仅输入作者 1 的字段,并将作者 2 和作者 3 留空。我该如何让 jQuery 序列化函数在 URL 中仅包含输入的字段而不包含空字段?

最佳答案

我刚刚遇到了同样的问题,但表单类型截然不同。我不喜欢这里的几个答案如何删除表单元素,您可以在提交表单之前看到页面上删除的元素。其他人克隆了该表单,但其中一个表单没有为我返回任何结果。

所以我最终得到了这个:

$('#submForm').find('input').not('[value=""]').serialize();

就我而言,上述代码适用于我选择的菜单以及输入字段。

这正是我使用的:

$('#search').find('input, select').not('[value=""], [value="0"], [value="DESC"]').serialize();

因此它只提取具有数据的表单字段,而不提取任何默认值。我很想知道是否可以进一步优化。

关于jQuery序列化如何消除空字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6240529/

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