我的表单中有一些输入,现在我想从表单中获取json对象而没有一些名为point的输入,我的代码有什么问题?我必须删除它们。它似乎不适用于not()
function.How如何修复我的代码?
<form id="myform">
<input name='student' value='a'/>
<input name='student' value='b'/> '
...
<input name='point' value='90'/>
<input name='point' value='95'/>
</form>
现在我只想将学生数据提交给服务器。所以我写了代码:
var data = $('#myform').not("input[name='point']").serializeArray();
var objParam = {};
$.each(data, function(i, v) {
objParam[v.name] = v.value;
});
但结果仍然有点数据。not()
函数出了什么问题?
答案 0 :(得分:2)
分解您的代码$('#myform')
选择您的表单,在这种情况下,只选择一个对象,然后使用.not("input[name='point']")
过滤该对象,但只有一个对象是表单本身。
您想要过滤表单的子项,所以只需添加.children(),如下所示:
var data = $('#myform').children().not("input[name='point']").serializeArray();
var objParam = {};
$.each(data, function(i, v) {
objParam[v.name] = v.value;
});
答案 1 :(得分:1)
希望这会对你有所帮助。
$('#myform input[name!=point]').serializeArray()
答案 2 :(得分:1)
你的选择器有问题。
$('#myform').not("input[name='point']").serializeArray()
...说,“将ID为'myForm'的表单序列化,这也不是输入,名称为'point'。
相反,你的意思是:“使用ID'myForm'序列化表单,但省略名为'point'的子输入。
这是一种非jQuery方式,使用原生FormData。
//get the form as form data
var fd = new FormData(document.querySelector('#myform'));
//delete any elements pertaining to [name=point]
fd.delete('point');
//et voila; this shows we retain only the student fields
for (var key of fd.keys()) alert(key);