Javascript:如何让单选按钮的“onchange”事件通过外部函数触发?

Posted

技术标签:

【中文标题】Javascript:如何让单选按钮的“onchange”事件通过外部函数触发?【英文标题】:Javascript: How to get a radio button's "onchange" event to fire through an external function? 【发布时间】:2017-10-12 02:06:03 【问题描述】:

当通过外部函数而不是通过单击单选按钮本身检查单选按钮时,是否可以触发单选按钮的“onchange”事件?

我在下面创建了我的问题的演示,请随意将以下内容放入文本文件并将其另存为 .html

<!DOCTYPE html>
<html>
<body>

<p>
This example demonstrates how the "onchange" event on radio buttons does not fire if the button is selected externally, i.e. by setting its "checked" value to "true".
<br />
You can test this by clicking one of the radio buttons invididually, then by clicking the "Select 1" or "Select 2" buttons.
<br />
The radio buttons have an "onchange" event registered such that an alert box should pop up when one of them is selected.
</p>

1: <input type="radio" value="1" id="1" name="myradio" onchange="myFunction()" /> <input type="button" value="Select 1" onclick="document.getElementById('1').checked=true;" /><br />
2: <input type="radio" value="2" id="2" name="myradio" onchange="myFunction()" /> <input type="button" value="Select 2" onclick="document.getElementById('2').checked=true;" />

<script>
function myFunction() 
    alert("A radio button was selected.");

</script>

</body>
</html>

这不是How to trigger event in javascript? 的复制品,方法如下:

如果我要手动触发事件,那将需要我查看单选按钮并与我上次查看它的时间进行比较,然后相应地触发“onchange”事件。问题是可以通过多种方式(单击、键盘按下、触摸/点击、外部功能等)选择单选按钮,而不是监视每个选择途径,我宁愿让输入元素为我做这件事.如果我能实现我在问题中提出的要求,它将简化这一点。

【问题讨论】:

How to trigger event in JavaScript?的可能重复 ***.com/questions/2490825/… 或者如果您使用 jQuery,您可以使用 .trigger('change') 轻松完成 @jmoerdyk 如果我要手动触发事件,那将需要我查看单选按钮并与我上次查看它的时间进行比较,然后相应地触发“onchange”事件。问题是可以通过多种方式(单击、键盘按下、触摸/点击、外部功能等)选择单选按钮,而不是监视每个选择途径,我宁愿让输入元素为我做这件事. @user3163495 如果你有 jQuery,this answer 会为更改和点击事件创建一个新的处理程序。 【参考方案1】:

使用.click()

<input type="button" value="Select 2" onclick="document.getElementById('2').click();" />

你应该避免使用内联js。

【讨论】:

以上是关于Javascript:如何让单选按钮的“onchange”事件通过外部函数触发?的主要内容,如果未能解决你的问题,请参考以下文章

MFC 中的单选按钮(重写)

Tkinter 单选按钮未正确选择

单选按钮的 HTML 表。使单选按钮可单击单元格中的任何位置

jQuery 验证,将错误消息放在复选框和单选按钮组下方

如何从 Javascript 更改 HTML 单选按钮选择?

如何检查是不是使用 JavaScript 选择了单选按钮?