我正在使用 jquery $.ajax();
函数来发布表单数据,
为了获取表单的数据,我正在使用 new FormData
因为在我的表单中也有一个输入文件。
问题是我在表单中也禁用了字段,这些字段通常不会发布,但如果我使用新的 FormData
它们就会发布。
如何解决这个问题?我不需要发布禁用的输入字段!
最佳答案
如何仅使用您想要的字段构建 FormData
:
// New FormData, get form and inputs
var payload = new FormData(),
$form = $("form")
$inputs = $("input", $form);
// For each input
for (var i = 0, l = $inputs.length; i < l; i++) {
// Cache jQuery selector for input and get disabled attr
var $input = $(inputs[i]),
disabled_attr = $input.attr("disabled");
// If the disabled attr is undefined or false
// see http://stackoverflow.com/questions/1318076/jquery-hasattr-checking-to-see-if-there-is-an-attribute-on-an-element
if (disabled_attr === "undefined" || disabled_attr === false) {
// Append the key value pair to the FormData
payload.append($input.attr("name"), $input.attr("value"));
}
}
您现在应该能够使用 $.ajax
上的 data
提交 FormData。如果失败,您可以使用普通 JavaScript 提交它:
var xhr = new XMLHttpRequest();
xhr.open("POST", url, true);
xhr.send(payload);
关于javascript - 为什么 FormData 发布禁用的 html 字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21478834/