我有动态复选框以及相应的文本输入。我想要实现的是当选中一个复选框时,会提醒特定复选框文本输入的值。我似乎无法获得文本输入的值。目前,所有复选框仅提醒第一个文本框的值而不是正确的值。此外,默认情况下,文本输入应该被隐藏,直到单击一个复选框,然后显示相应的文本字段
以上是我想要实现的一个简单例子。
<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 + '"> ' + (x + 1) + ' <br>' + '<input type="text" name="qty" id="' + (x + 1) + '" title="Qty needed" size="1" maxlength="2"><br>');
}
}
答案 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)