2016-02-02 5 views
0

Я генерирую идентификаторы трех наборов полей ввода динамически (автоинкремент). Таким образом, один набор имеет идентификаторы, такие как «inputbox1, inputbox2 и т. Д.», А другой набор имеет идентификаторы, такие как «value1, value2 etc», а третий набор имеет «result1, result2 etc»JQuery Применение одиночной функции для нескольких идентификаторов

Моя основная функция в jquery заключается в следующем:

$("#button").click(function() { 
var inputbox1 = parseInt($('#inputbox1').val()); 
var value1 = parseInt($('#value1').val()); 

$("#result1").val(inputbox1 + value1); 
}); 

Я не знаю, сколько входных ячеек будет там, поскольку они динамически генерируются. Итак, как я могу применить эту же основную функцию для всех текстовых полей? Я знаю, что многие функции, подобные этому, будут неэффективными, и, вероятно, это не самый правильный способ.

$("#button").click(function() { 
var inputbox1 = parseInt($('#inputbox1').val()); 
var value1 = parseInt($('#value1').val()); 
$("#result1").val(inputbox1 + value1); 

var inputbox2 = parseInt($('#inputbox2').val()); 
var value2 = parseInt($('#value2').val()); 
$("#result2").val(inputbox2 + value2); 
}); 
+0

Вы можете добавить общий класс сгенерированных элементов? – tymeJV

+0

@tymeJV Я мог бы сделать это, но мне все равно понадобится текстовое поле результата, чтобы показать только результат двух конкретных текстовых полей. –

ответ

2
$("#button").click(function() { 

    $('input[id="^inputbox"]').each(function(){ 
    var inputbox = parseInt($(this).val()); 
    var number = $(this).attr("id").split ("inputbox")[ 1 ]; 
    var value = parseInt($('#value' + number).val()); 
    $("#result" + number).val(inputbox + value); 

    }); 
}); 
+0

Спасибо! Оно работает :) –

0

Попробуйте использовать .each():

$('input').each(function(e){ 
    //do your stuff 
}); 

Вы, возможно, потребуется определить конкретные материалы, которые будут включены с другим классом. В этом случае использование id не будет работать.

Заканчивать эту страницу: http://api.jquery.com/each/

1

Вы можете написать запрос для ID атрибутов в соответствии с префиксом подстроки, таким образом вы получаете каждый элемент, который имеет атрибут ID, начиная с «InputBox», например.

$("[id^='inputbox']").each(function() { 
    // extract the number with a simple split or substring, and do whatever you need 
}); 

Или быть более конкретным, если вам нужно:

$("input[id^='inputbox']").each(function() { 
    // extract the number with a simple split or substring, and do whatever you need 
}); 

См the documentation

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