Вопрос:
У меня есть пара текстовых входов, и я хотел бы вычислить сумму значений в другом вводе. Это должно произойти “на лету”, как только пользователь вводит значение на одном из входов. Я планирую использовать jQuery для этого, и я хотел бы добавить имя класса для каждого ввода, что-то вроде class= “input1”, class= “input2” и так далее.
Моя проблема в том, что я не знаю, чтобы добавить все эти значения, и учитывая тот факт, что у меня более 50 входов, я не хочу “добавлять их вручную”.
Любая помощь приветствуется.
Лучший ответ:
Если вы украшаете все входы, которые хотите добавить вместе с классами input1, input2 и т.д., Это будет получать сумму текущих значений во всех этих входах
var sum = 0; $(«input[class *= ‘input’]»).each(function(){ sum += +$(this).val(); });
Тогда, естественно, если вы хотите поместить это значение во вход destination id
$(«#destination»).val(sum);
Здесь скрипка
РЕДАКТИРОВАТЬ
Если вы хотите, чтобы это выполнялось, когда какое-либо из этих текстовых полей было изменено, вы можете поместить это в обработчик события изменения
$(document).on(«change», «input[class *= ‘input’]», function() { var sum = 0; $(«input[class *= ‘input’]»).each(function(){ sum += +$(this).val(); }); $(«#destination»).val(sum); });
Вот эта скрипка
РЕДАКТИРОВАТЬ
Per Jaspers, если вы знаете, что input1, input2 и т.д. Всегда будут первым классом на ваших входах, т.е. Вы никогда не будете делать
<input class=’someNewClass input1′
то вы могли бы
$(«input[class ^= ‘input’]»).each(function(){
^= означает, что начинается с, а *= означает где угодно.
Ответ №1
дать им общее имя, и вам нужно проанализировать значение, поскольку оно будет первоначально изначально
var result= 0; $(«input[name=’sum’]»).each(function(){ result = result + parseInt($(this).val(),10); });