2

正如每个开发人员都希望的那样,我想让我的代码简短而简单。但有道理。

我有这个编辑配置文件字段,它有几个字段,大约 10 个文本框和 2 个单选按钮。

在一个简单的登录表单中,我可以像这样获取用户名和密码的值:

$("#username")并将$("#password") 它们分别赋值给一个变量username password

那将变成这样:(在ajax中)

$.ajax({
    url : some_url,
    data: {
        username : username,
        password : password
    success : something
    }
});

但是如果我有多个字段怎么办,我不希望我的代码非常混乱,有所有这些任务。

所以我想出了一个基于输入ID的键值对的想法

var object;
$("#formUpdate:input").each(function(){
      var key = $(this).attr('id');
      var value = $(this).val();
      object.key = value;
});

问题,我错过了什么,但我无法让它工作,有没有更好的方法来做到这一点。你认为硬编码会好得多。

非常感谢你们!顺便说一句,今天是我的生日。

4

2 回答 2

3

您使用错误的语法向对象添加动态键。你需要括号符号["string"]

var obj = {};
$("#formUpdate :input").each(function(){ 
    var key = $(this).attr('id'); 
    var val = $(this).val(); 
    obj[key] = val; 
});

虽然你应该能够做到:

var obj = $("#formUpdate").serialzeArray();

假设您的输入也具有名称属性。

编辑:您的输入选择器中也缺少一个空格。

于 2012-10-29T17:46:40.433 回答
1

您需要将它们作为键传递:值:对..试试这个

如果要存储为对象数组..

var arr = [];
$("#formUpdate :input").each(function() {
    arr.push( { $(this).attr('id') : $(this).val() }) ;
});​
于 2012-10-29T17:45:56.607 回答