Jquery 访问表单输入值的最佳方法

Jquery 访问表单输入值的最佳方法,jquery,Jquery,我有以下两个变量。我将把数据变量发送到服务器,返回后,我希望访问各种原始值 我可以对数据或原始变量执行某种形式的eq(1).val()方法,但需要确保以正确的顺序访问它们,这可能会导致将来的维护问题。或者,我可以使用名称选择器从原始DOM中获取值,但看起来我已经做了两次了。或者我可以在原始表单中添加ID和名称,但这似乎是一种浪费 理想情况下,我可以将表单的名称/值转换为某种对象,但与序列化不同,数组不会生成数组,而是将值定向绑定到名称。例如,如果我的表单有,我将能够以newObject.foo的

我有以下两个变量。我将把数据变量发送到服务器,返回后,我希望访问各种原始值

我可以对数据或原始变量执行某种形式的eq(1).val()方法,但需要确保以正确的顺序访问它们,这可能会导致将来的维护问题。或者,我可以使用名称选择器从原始DOM中获取值,但看起来我已经做了两次了。或者我可以在原始表单中添加ID和名称,但这似乎是一种浪费

理想情况下,我可以将表单的名称/值转换为某种对象,但与序列化不同,数组不会生成数组,而是将值定向绑定到名称。例如,如果我的表单有
,我将能够以newObject.foo的形式访问该值

有没有关于最好的方法的建议

var raw=$("#form_id").find('input,select');
var data=raw.serializeArray();

我认为jQuery允许您选择每一个输入(甚至选择、单选和复选框,它们实际上不是一次输入)来使用serializeArray()构建该数组:

从这里的jQuery文档: 当然,将$(“:inputs”)限制为带字符的表单,尤其是在文档中提供了多个表单的情况下

这将使您获得一个如下所示的对象:

[ { 姓名:"富",, 值:“bar” }, { ... } ]


希望这有帮助。

如果我正确理解了您的问题,我将序列化输入和表单字段:

var result = $('form').serializeArray();
然后获取单个对象:

result.ObjectName;

您可以通过直接访问表单来执行此操作:

var form = $("#form_id")[0];
console.log( form.foo.value );
这样更有效。 这一点已在实践中得到证明 它显示了上述方法在几乎所有浏览器中都优于其他测试用例。 通过
var item=$(“.buttonRef”)的直接get方法在某些情况下性能优于。
注意:虽然在大多数情况下不建议使用ID,但ID的访问速度比类快。
当涉及到访问表单输入值时的效率时,你可能会考虑IDS。


我不知道你的问题是否正确。

我想要的是原始数据,而不是返回的数据。var objects=$.parseJSON(结果);给我空的。我做错什么了吗?原始数据是什么意思?原始数据是原始表单数据,而不是服务器的回复。调用
$有什么意义。使用ArgumentsAlija数组调用parseJSON
,就像您在编辑它之前的第一个响应一样。这种方法的问题是,每次更改页面布局时,顺序都会随之改变,值也随之改变。@user1032531您是说名称吗?只要表单有
,那么
form.foo
将引用该输入,
form.foo.value
将引用该输入的值。顺序或值都无关紧要。如果你的意思是名称改变了,那么你也不能做
newObject.foo
,因为
foo
已经改变了它的名称。我实际上倾向于。。变量字段={};raw.each(function(){fields[this.name]=$(this.val();});我也不知道你是否正确回答了我的问题,但我喜欢你的回答。谢谢
var formVals = [];
$('select, input').each(function(i, v){
   formVals[$(this).attr('name')] = $(this).val();
})
var form = $("#form_id")[0];
console.log( form.foo.value );
var raw=$("#form_id").find('input,select');