Используя JQuery, как вы выбираете один элемент на основе имени другого? - PullRequest
1 голос
/ 22 сентября 2009

Если в веб-форме есть несколько пронумерованных полей, например счет-фактура:

< input type="text" name="Item1" /><input type="text" name="Desc1" /><br />
< input type="text" name="Item2" /><input type="text" name="Desc2" /><br />
< input type="text" name="Item3" /><input type="text" name="Desc3" /><br />

Используя JQuery, как выбрать первое, а затем сослаться на второе из первого?

У меня есть что-то вроде $("input[id^='Item']"), которое довольно хорошо выбирает каждый элемент, но из каждого из них мне нужно ссылаться на соответствующий деск и заполнить его результатом.

Скажем, например, что пользователь вводит что-то в Item1 и onBlur. Я хочу скопировать содержимое в соответствующий деск.

Спасибо

Ответы [ 5 ]

5 голосов
/ 22 сентября 2009

Это может быть возможным решением:

$("input[name^=Item]").blur(function() { 
   var n = $(this).attr("name").match(/\d+/);

   $("input[name=Desc" + n + "]").val($(this).val());
});
4 голосов
/ 22 сентября 2009
2 голосов
/ 22 сентября 2009
$("input[name^=Item]").blur(function() {
    var reg = new RegExp("/[0-9]+$/")
    var number = reg.exec($(this).attr("id"));
    $("input[name=Desc"+number+"]").val($(this).val());
}
0 голосов
/ 22 сентября 2009

Вариация:

$("input[name^=Item]").blur(function(){
    $($(this).replace(/^[^0-9]+/, 'Desc')).val($(this).val());
});
0 голосов
/ 22 сентября 2009

Если я правильно понимаю ваш вопрос. Самый простой способ, которым я могу придумать, это установить слушатель размытия на каждый элемент.

$("input[id^='Item']").blur(function(event){
    $(event.target).attr('the attribute you want to change', $(event.target).val()) 
})

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

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