我想对价值变化的.change()
做出反应。在这种情况下,必须更新其他(隐藏)字段。
<input type="text" name="n1"><br>
<input type="text" name="n2"><br>
<input type="text" name="n3"><br>
<input type="hidden" name="h1"><br>
<script>
$("input[type='text']").change( function() {
try {
$temp = $(this).next("input[type='hidden']");
} catch (e) { // just for testing
alert("not found "+e);
}
try {
$temp = $(this).next("input[name='h1']");
} catch (e) { { // just for testing
alert("not found "+e);
}
$temp.val("hidden");
alert("Temp is a "+$temp);
alert("Temp has following value:"+$temp.val());
})
</script>
在http://jsfiddle.net/22C2n/1209/
进行测试演示本声明
$temp = $(this).next("input[type='hidden']");
导致“未定义”或更好:$ temp是$ object []和 不(如预期的)$ object [ input name ='h1']
问题出在哪里?
答案 0 :(得分:1)
答案 1 :(得分:0)
使用nextAll(),并小心你的catch块(小提琴中的那些;))。
我不会使用两个try / catch块,因为即使在第一个块中填充了$ temp,它也会被第二个块覆盖。
请注意,只有当输入失去焦点时才会触发更改事件。
我更新了你的小提琴:
$temp = $(this).nextAll("input[type='hidden']");
if($temp.length <= 0) $temp = $(this).nextAll("input[name='h1']");
<强> See the demo here 强>