我有一段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>
答案 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()
方法就变得微不足道了:
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;