如何改变输入'按名称或ID进行onchange事件?

时间:2017-06-07 14:32:14

标签: javascript jquery html

我有一段HTML代码,这是我网站的简单版本。输入名称与行索引相关。所以,我想知道如何改变输入'使用jQuery的onchange事件?

对于每一行,它都有自己的与行索引相关的函数。例如,对于tr index = 0,它具有函数Test1(),对于tr index = 1,它具有函数Test2()......

不能简单地使用输入选择器,因为页面中还有一些其他输入。只有输入的ID和名称是唯一的。

<tr stampId = '1001' index = '0'>
    <td>
        <span>
        <input type="text" name="QuickOrderQty@6@0@1" id="QuickOrderQty@6@0@1" ct="Field" onchange=" SaveControlState(event,'Text');">
        </span>
    </td>
</tr>
<tr stampId = '1001' index = '1'>
    <td>
        <span>
        <input type="text" name="QuickOrderQty@6@1@1" id="QuickOrderQty@6@1@1" ct="Field" onchange=" SaveControlState(event,'Text');">
        </span>
    </td>
</tr>
<tr stampId = '1001' index = '2'>
    <td>
        <span>
        <input type="text" name="QuickOrderQty@6@2@1" id="QuickOrderQty@6@2@1" ct="Field" onchange=" SaveControlState(event,'Text');">
        </span>
    </td>
</tr>
<tr stampId = '1001' index = '3'>
    <td>
        <span>
        <input type="text" name="QuickOrderQty@6@3@1" id="QuickOrderQty@6@3@1" ct="Field" onchange=" SaveControlState(event,'Text');">
        </span>
    </td>
</tr>

好吧,也许我应该把我想要的结果放在这里。

<script>Do something here, then change the onchange events to below.</script>
<tr stampId = '1001' index = '0'>
    <td>
        <span>
        <input type="text" name="QuickOrderQty@6@0@1" id="QuickOrderQty@6@0@1" ct="Field" onchange="Test1();">
        </span>
    </td>
</tr>
<tr stampId = '1001' index = '1'>
    <td>
        <span>
        <input type="text" name="QuickOrderQty@6@1@1" id="QuickOrderQty@6@1@1" ct="Field" onchange="Test2();">
        </span>
    </td>
</tr>
<tr stampId = '1001' index = '2'>
    <td>
        <span>
        <input type="text" name="QuickOrderQty@6@2@1" id="QuickOrderQty@6@2@1" ct="Field" onchange="Test3();">
        </span>
    </td>
</tr>
<tr stampId = '1001' index = '3'>
    <td>
        <span>
        <input type="text" name="QuickOrderQty@6@3@1" id="QuickOrderQty@6@3@1" ct="Field" onchange="Test4();">
        </span>
    </td>
</tr>

2 个答案:

答案 0 :(得分:2)

对不起,如果发生任何错误。这是我第一次回答问题。我甚至没有经验。

如果我理解正确,你想知道导致事件触发的元素。你可以使用这个词

$("input").change(function(event) {
    var x = $(this).val();
    // x = the value of the input element that triggered the event.
});

我希望这会有所帮助。

答案 1 :(得分:0)

如果您正在使用jQuery,则不应使用内联onchange事件处理程序。此外,如果您希望以相同的行为定位多个元素,请使用共享类。如果你同时做这两件事,那使用jQuery的index()方法就变得微不足道了:

&#13;
&#13;
var functions = {
   Test1: function(){ console.log("TextBox1 changed") },
   Test2: function(){ console.log("TextBox2 changed") },
   Test3: function(){ console.log("TextBox3 changed") },
   Test4: function(){ console.log("TextBox4 changed") }
}

$(document).on('change','.myClass',function(){
    var index = $(this).index();
    functions["Test" + index]();
})
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" class="myClass">
<input type="text" class="myClass">
<input type="text" class="myClass">
<input type="text" class="myClass">
&#13;
&#13;
&#13;