如何从表单异常中获取某个特殊名称的json对象?

时间:2017-11-29 14:06:43

标签: javascript jquery html

我的表单中有一些输入,现在我想从表单中获取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()函数出了什么问题?

3 个答案:

答案 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);