第一次输入[type =" text"]不起作用

时间:2014-07-30 02:40:52

标签: jquery

我希望它设置在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

3 个答案:

答案 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
});

更新小提琴:http://jsfiddle.net/yvDDp/12/

答案 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());
});

Here is fiddle