通过javascript设置时,单选按钮onchange不会触发

时间:2013-06-26 12:36:55

标签: javascript radio-button

当我通过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是由工具生成的。所以提供的一些选项不会帮助我。因此,在上面的例子中,当我点击按钮时,单选按钮中的相应事件应该触发。

7 个答案:

答案 0 :(得分:1)

这是你想要做的吗?

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

所以你可以点击它或按下按钮进入“selectionChanged()”功能。

答案 1 :(得分:0)

您可以在通过JS检查/取消选中时手动触发事件。像这样......

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

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

答案 2 :(得分:0)

您也可以这样调用onClick方法:

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

答案 3 :(得分:0)

更改onclick to onchange for all单选按钮,因为在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

答案 4 :(得分:0)

如果你想通过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>

答案 5 :(得分:0)

Javascript OnChnage()事件不适用于IE8,因此最好使用click事件代替更改事件。 见:http://forum.jquery.com/topic/ie8-onchange-onclick-not-firing

关于更改事件的另一个有趣的事情是,当您使用Jquery的change()函数时,它只会在您单击以进行检查时起作用。而不是当你点击取消选中。 JQuery $(#radioButton).change(...) not firing during de-selection

答案 6 :(得分:-1)

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