0

我有动态复选框以及相应的文本输入。我要实现的目标是检查复选框时,请警报特定的复选框文本输入值。我似乎无法获得文本输入的值。目前,所有复选框仅提醒第一个文本框的值,而不是正确的。同样默认情况下,文本输入应隐藏,直到单击复选框,然后显示相应的文本字段

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>');
    }
}
4

3 回答 3

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();

演示

于 2013-10-04T14:59:13.093 回答
0

从此更改您的行:

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

对此:

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

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

于 2013-10-04T15:07:06.713 回答
0

尝试这个

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

演示

于 2013-10-04T15:09:39.720 回答