Jquery选择下一个文本输入值

时间:2013-10-04 14:55:20

标签: jquery html5 dom

我有动态复选框以及相应的文本输入。我想要实现的是当选中一个复选框时,会提醒特定复选框文本输入的值。我似乎无法获得文本输入的值。目前,所有复选框仅提醒第一个文本框的值而不是正确的值。此外,默认情况下,文本输入应该被隐藏,直到单击一个复选框,然后显示相应的文本字段

http://jsfiddle.net/hpJMN/55/

以上是我想要实现的一个简单例子。

 <h3>Checkbox Toggle input element</h3>


<div class="equipment">

</div>


printarr();

脚本

$(".equipment input:checkbox").change(function () {
    alert($(this).siblings("input[type=text]").val());
});

function printarr() {
    for (var x = 0; x < 4; x++) {
        $(".equipment").append(
            '<input type="checkbox" name="drill_eq[]" value="' + x + '">&nbsp;' + (x + 1) + '&nbsp<br>' + '<input type="text" name="qty" id="' + (x + 1) + '" title="Qty needed" size="1" maxlength="2"><br>');
    }
}

3 个答案:

答案 0 :(得分:3)

你需要根据你的标记将你的选择器改成这样的东西,兄弟姐妹会选择你所有的输入字段(兄弟姐妹)而你正在做一个eq(0),它只会得到第一个(没有eq(0)的事件,你仍然只有第一个的值):

$(this).next().next().val();

$(this).nextUntil('input[type=text]').next().val(); //If you are not sure how many other elements may come in between these

$(this).nextAll('input[type=text]').first().val(); //If you are not sure how many other elements may come in between these

$(this).nextAll('input[type=text]:first').val();

<强> Demo

答案 1 :(得分:0)

改变你的行:

alert($(this).siblings("input[type=text]").val());

到此:

alert($(this).nextAll("input[type=text]").first().val());

关键区别在于使用 nextAll 而不是兄弟。 “siblings”方法将找到所有兄弟姐妹(之前和之后),而nextAll将找到所选元素之后的所有兄弟姐妹(这是你想要的)。

答案 2 :(得分:0)

试试这个

 alert($(this).nextAll("input:text").get(0).value);

<强> DEMO