使用JQuery,如何根据另一个名称选择一个元素?

时间:2009-09-22 18:06:59

标签: jquery css-selectors

如果我在网络表单中有一堆编号字段,例如发票:

< 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']")的东西,它可以很好地选择每个项目,但是从每个项目中我需要引用相应的Desc并用结果填充它。

例如,假设用户在Item1和onBlur中键入内容我想将内容复制到相应的Desc。

由于

5 个答案:

答案 0 :(得分:5)

这可能是一个可能的解决方案:

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

   $("input[name=Desc" + n + "]").val($(this).val());
});

答案 1 :(得分:4)

答案 2 :(得分:2)

$("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());
}

答案 3 :(得分:0)

如果我理解你的问题。我能想到的最简单的方法是在每个项目上放置一个模糊监听器。

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

这将获取所有输入并添加一个模糊侦听器,它根据值输入更改属性。

答案 4 :(得分:0)

变体:

$("input[name^=Item]").blur(function(){
    $($(this).replace(/^[^0-9]+/, 'Desc')).val($(this).val());
});