单选按钮onchange在通过javascript设置时未触发

radiobutton onchange not firing when set via javascript

本文关键字:设置 javascript onchange 单选按钮      更新时间:2023-09-26

当我通过javascript设置选中状态时,我想要的是单选按钮触发onchange事件。

http://jsfiddle.net/4gtCn/

<script>
function check()
{
document.getElementById("red").checked=true
}
function uncheck()
{
document.getElementById("red").checked=false
}
function selectionChanged(){
alert("checked");
}
</script>
What color do you prefer?<br>
<input type="radio" name="colors" id="red" onchange="selectionChanged()">Red<br>
<input type="radio" name="colors" id="blue" onclick="selectionChanged()">Blue<br>
<input type="radio" name="colors" id="green">Green

<button type="button" onclick="check()">Check "Red"</button>
<button type="button" onclick="uncheck()">Uncheck "Red"</button>

感谢大家的帮助。这是一个更大问题的片段。我正在使用第三方报告工具(LogiXml)。我唯一的选择是更改事件,因为其余的javascript都是由该工具生成的。所以提供的一些选项对我没有帮助。所以在上面的例子中,当我点击按钮时,单选按钮中的相应事件应该会启动。

这就是您想要做的吗?

<script>
function check()
{
    document.getElementById("red").checked=true;
    selectionChanged();
}
function uncheck()
{
    document.getElementById("red").checked=false
    selectionChanged();
}
   function selectionChanged(){
   alert("checked");
}
</script>

因此,您可以通过点击或按下按钮进入功能"selectionChanged()"。

当您通过JS检查/取消检查时,您可以手动触发事件。像这样。。。

document.getElementById("red").onchange(); 

警告:请检查与其他浏览器的兼容性,尤其是IE,否则请使用jQuery来完成同样的操作。

您也可以通过以下方式调用onClick方法:

document.getElementById("radioButton").click()

将所有单选按钮的onclick更改为onchange,因为在onchange中的一些单选按钮和onclick 中的一些

<input type="radio" name="colors" id="red" onchange="selectionChanged()">Red<br>
<input type="radio" name="colors" id="blue" onchange="selectionChanged()">Blue<br>
<input type="radio" name="colors" id="green" onchange="selectionChanged()">Green

如果你想通过onChange事件运行selectionChanged函数,当用户点击调用check()函数时,在这种情况下,你可以直接在check()上调用selectionChanged函数使其运行。

请检查以下代码,我们在check()函数上添加了selectionChanged():

<script>
function check()
{
document.getElementById("red").checked=true
selectionChanged();
}
function uncheck()
{
document.getElementById("red").checked=false
}
function selectionChanged(){
alert("checked");
}
</script>
What color do you prefer?<br>
<input type="radio" name="colors" id="red" onchange="selectionChanged()">Red<br>
<input type="radio" name="colors" id="blue" onclick="selectionChanged()">Blue<br>
<input type="radio" name="colors" id="green">Green

<button type="button" onclick="check()">Check "Red"</button>
<button type="button" onclick="uncheck()">Uncheck "Red"</button>

Javascript OnChnage()事件在IE8上不起作用,因此最好使用click事件来代替更改事件。请参阅:http://forum.jquery.com/topic/ie8-onchange-onclick-not-firing.

关于change事件还有一个有趣的地方,当您使用Jquery的change()函数时,它只有在您单击进行检查时才能工作。而不是当您单击取消选中时。JQuery$(#radioButton).change(…)在取消选择期间未触发

这似乎很好。尝试使用firebug进行调试,并检查firebug中的控制台是否存在任何语法错误。