动态地将多个表单值设置为JavaScript对象

时间:2013-03-08 16:49:44

标签: javascript jquery html json

我正在尝试优化我的代码,并且想知道这里是否有人可以帮助我。

在我解释我的问题之前,让我为您提供我的html和js / jquery代码以供您观看!

HTML:

<tr>
<td>
    <input email="a@a.com" value="4560" type="checkbox" id="task_checked">
</td>
<td>a@a.com</td>
</tr>
<tr>
<td>
    <div>
        <span>E-Mail: </span><input id="4560" type="text" name="added_email" class="added_email">
        <span>Enter Book Name: </span><input id="4560" type="text" class="category"> 
    </div>
</td>
</tr>

<tr>
<td>
    <input email="b@b.com" value="6012" type="checkbox" id="task_checked">
</td>
<td>b@b.com</td>
</tr>
<tr>
<td>
    <div>
        <span>E-Mail: </span><input id="6012" type="text" name="added_email" class="added_email">
        <span>Enter Book Name: </span><input id="6012" type="text" class="category"> 
    </div>
</td>
</tr>

<tr>
<td>
    <input email="c@c.com" value="5604" type="checkbox" id="task_checked">
</td>
<td>c@c.com</td>
</tr>
<tr>
<td>
    <div>
        <span>E-Mail: </span><input id="5604" type="text" name="added_email" class="added_email">
        <span>Enter Book Name: </span><input id="5604" type="text" class="category"> 
    </div>
</td>
</tr>

希望这不会让你害怕!

这是我的Jquery。

var newTasksArr = {};
 $("#task_checked:checked").each(function() {
var email = $(this).attr("email");
var id = $(this).val();
newTasksArr[id] = email;
});


var AddedEmailsArr = [];

var inputs = $('input.added_email'), tmp;
$.each(inputs, function(i, obj) {
tmp = {
    'Task_ID': $(obj).attr('id'),
    'email': $(obj).val(),
    'category' : $(obj).siblings('.category').val(),
};

AddedEmailsArr.push(tmp);
});

正如你现在所看到的,我有两个Jquery函数,我试图将其作为一个函数。

让我告诉大家/ gals输出的样子。

//output for var newTasksArr = {};
Object { 4560="a@a.com", 6012="b@b.com", 5604="c@c.com" }

//output for var AddedEmailsArr= {};
[ 
Object { Task_ID="4560",  email="f@f.com.com",  category="example1" }, 
Object { Task_ID="6012",  email="g@g.com.com", category="example2" }, 
Object { Task_ID="5604",  email="z@z.com", category="example2" }
]

为了优化我的代码,我想摆脱这两个对象并进入一个对象。

以下是我希望它的样子。

[ 
Object { Task_ID="4560",  email="f@f.com.com",  category="example1" }, 
Object { Task_ID="6012",  email="g@g.com.com", category="example2" }, 
Object { Task_ID="5604",  email="z@z.com", category="example2" }, 
Object { Task_ID="4560",  email="a@a.com" }, 
Object { Task_ID="6012",  email="b@b.com" },
Object { Task_ID="5604",  email="c@c.com" } 
]

希望我的问题有道理,我真的很感谢你们提出这个问题的任何帮助。请随时向我询问澄清事项。

谢谢。

1 个答案:

答案 0 :(得分:0)

我没有时间完全了解所有细节。但我认为您可能需要退后一步并重新考虑这种方法。 ID应该是唯一的,您可以查看使用“数据”属性而不是创建自己的属性。看起来你是在正确的思维过程中,但没有坚实的基础。