我有一个带有更改事件处理程序的选择:
<select id="mySelect" onchange="changedMySelect">
<option value="test1">Test1</option>
<option value="test2">Test2</option>
</select>
和
function changedMySelect(event, myParam1, myParam2) {
alert(myParam1);
}
我希望能够通过附加参数(myParam1,myParam2)触发此事件(以HTML声明)。
$("#mySelect").trigger("change", myParamValue1, myParamValue2);
但是myParam1是未定义的,就像用户单击时一样(这是预期的)。如何发送myParamValue1?
理想情况下,我不应该将HTML中声明的onchange移至Javascript(已确认可以正常工作)。我们需要在HTML中保留onchange,但如有必要,我们可以对其进行修改。
答案 0 :(得分:0)
使用onchange="something"
属性时,被调用的函数将只接收您在该属性中输入的内容。它不会获得事件或其他任何信息。因此,放置onchange="changedMySelect(1, 2)"
将使用参数1
和2
来调用changedMySelect函数。
为了使其能够接收事件和其他参数,您将改为通过javascript处理事件。另外,jQuery的trigger
需要将参数作为数组而不是作为单独的参数:
function changedMySelect(event, myParam1, myParam2) {
alert(myParam1 + ' ' + myParam2);
}
// You need to do this instead of using onselect in the HTML
$("#mySelect").on("change", changedMySelect);
$("#mySelect").trigger("change", ["param1", "param2"]);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select id="mySelect">
<option value="test1">Test1</option>
<option value="test2">Test2</option>
</select>