2013-03-08 6 views
0

Я пытаюсь немного оптимизировать свой код и задавался вопросом, может ли кто-нибудь здесь помочь мне.Динамическое изменение значений формы в объекте JavaScript

Прежде чем я объясню свою проблему, позвольте мне предложить вам мой код html и js/jquery для вашего удовольствия!

HTML:

<tr> 
<td> 
    <input email="[email protected]" value="4560" type="checkbox" id="task_checked"> 
</td> 
<td>[email protected]</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="[email protected]" value="6012" type="checkbox" id="task_checked"> 
</td> 
<td>[email protected]</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="[email protected]" value="5604" type="checkbox" id="task_checked"> 
</td> 
<td>[email protected]</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, которые я пытаюсь сделать в одном.

Позвольте мне показать вам, ребята/девушки, как выглядит результат.

//output for var newTasksArr = {}; 
Object { 4560="[email protected]", 6012="[email protected]", 5604="[email protected]" } 

//output for var AddedEmailsArr= {}; 
[ 
Object { Task_ID="4560", email="[email protected]", category="example1" }, 
Object { Task_ID="6012", email="[email protected]", category="example2" }, 
Object { Task_ID="5604", email="[email protected]", category="example2" } 
] 

Для того, чтобы оптимизировать мой код, я хотел бы избавиться от двух объектов и сделать их одним объектом.

Ниже приведено то, что я хотел бы, чтобы он выглядел.

[ 
Object { Task_ID="4560", email="[email protected]", category="example1" }, 
Object { Task_ID="6012", email="[email protected]", category="example2" }, 
Object { Task_ID="5604", email="[email protected]", category="example2" }, 
Object { Task_ID="4560", email="[email protected]" }, 
Object { Task_ID="6012", email="[email protected]" }, 
Object { Task_ID="5604", email="[email protected]" } 
] 

Надеюсь, мой вопрос имеет смысл, и я по-настоящему ценю любую помощь от вас, ребята, с этим вопросом. Пожалуйста, попросите меня что-нибудь объяснить.

спасибо.

+0

Вы не задали здесь вопрос, просто сказали нам, как он должен выглядеть. Почему это должно выглядеть так? Не могли бы вы предоставить какой-то контекст? – Prisoner

+0

@Prisoner Привет, потому что в настоящее время я передаю два объекта на мой backend, и я бы хотел, чтобы он был одним. Спасибо. – BaconJuice

ответ

0

У меня нет времени полностью разобраться во всех деталях. Но я думаю, вам, возможно, потребуется сделать шаг назад и пересмотреть подход. Идентификаторы должны быть уникальными, и вы можете использовать атрибуты «данные» вместо создания собственных атрибутов. Кажется, что вы на правильном процессе мышления, но не прочный фундамент.

Смежные вопросы