我有一个名称和 ID 相同的文本框,我想获取特定文本框的值并进行验证,有人可以帮助我如何实现这一点,因为我是新手。
文本框名称、id 相同但值不同。
<input type=text id='test' value="1">
<input type=text id='test' value="2">
document.getElementsByTagName('input')[0].value //1
document.getElementsByTagName('input')[1].value //2
非常肮脏的做事方式
正如已经指出的那样,您不应该有两个具有相同标识符的元素。
<input type="text" id="test" name="test" value="1">
<input type="text" id="test" name="test" value="2">
但是,如果您想按价值选择某物(通常是个坏主意),您可以这样做:
$(':input[value="2"]')
更好的方法是有两个独特的文本框,如下所示:
<input type="text" id="test1" name="test" value="1">
<input type="text" id="test2" name="test" value="2">
不应有多个具有相同 ID 的元素。您可以为这两个元素分配相同的类,然后访问它。
document.getElementsByClassName('test')[0] //1
document.getElementsByClassName('test')[1] //2
并不是说您应该拥有两个或更多相同的 id,但如果您这样做,以下是如何处理它:
jQuery:
var inputs = $('input#my_id')
, val1 = inputs.eq(0).val()
, val2 = inputs.eq(1).val()
;
纯 JavaScript
var inputs = document.getElementsByTagName('input');
var input, val1, val2;
foreach ( var i in inputs )
{
// This code may not work, but you get the idea
input = inputs[i];
if (input.id == 'test')
{
if ( !val1 ) val1 = input.value;
else if ( !val2 ) val2 = input.value;
else break;
}
}
感谢您的帮助,我在循环中使用 id="{concat('txtboxAdjustment', position())}" 为文本框提供了不同的名称,并且完成了,但是我对阅读所有评论的主题有了很好的了解,再次感谢。
$("#test").val();
它只选择具有给定 ID 的第一个元素。您可以通过指定标签进一步细化您的选择
<input type=text class='fo' id='test' value="1">
<input type=text class='fp' id='test' value="2">
$("[id=test][class=fp]").val();
同名就足够了!
alert($("input[name='txtboxName']").eq(0).val());
alert($("input[name='txtboxName']").eq(1).val());