我希望它设置在input[type="text"
]但不起作用
$("tbody").on("keyup change", "tr td:nth-child(2) input,td:nth-child(3) input,td:nth-child(4) select",
function () {
$(this)
.closest("tr")
.find("td:first input")// i want it to set on the input[type="text"] but its not working
.val(this.value);
});
这是一个小提琴: fiddle updated
答案 0 :(得分:1)
首先,如果要更新第一个文本框,则选择器出现问题。您对该活动的过滤器不应包含tr td:nth-child(2) input
,因为这是您要更改的文本框。
其次,第一个td根本不包含文本框 - 它包含按钮。当您的选择器为td:first input
时,这就是您要搜索的内容。如果要查找文本框的第一个实例,则搜索字符串应为.find("input[type='text']:first")
。
更新的事件如下所示:
$("tbody").on("keyup change", "td:nth-child(3) input,td:nth-child(4) select",
function () {
$(this) //input
.closest("tr") //finds the row associated with the input
.find("input[type='text']:first") //returns the text input
.val(this.value); //sets the text
});
答案 1 :(得分:0)
替换此行:
.find("td:first input")
要:
.find("td input[type=text]")
它位于第二个td中,因此它不适用于td:first
。
答案 2 :(得分:0)
这是一种更好的方法。 我不确定你为什么要以复杂的方式选择文本框。除非你有某种理由这样做,否则我建议你用以下更简单的方式做同样的事情。
$("td:nth-child(3) input").on("keyup change",function(){
$(this).parent().prev().find("input").val($(this).val());
});