【问题标题】:(Firefox) radio onclick event does not work after that radio button is enabled(from disabled state)(Firefox) 单选按钮启用后,单选 onclick 事件不起作用(从禁用状态)
【发布时间】:2016-09-27 21:10:04
【问题描述】:

要求是如果点击Reset按钮,

  1. 必须启用所有单选按钮。
  2. 必须选中“每日”单选按钮。

这些代码在 IE、Chrome 和 Safari 上运行良好。但不适用于 Firefox!

在 Firefox 中,[document.getElementById('day').click();在 JAVASCRIPT 上 第 7 行。] 以下步骤将无法正常工作。

  1. 单击禁用按钮(禁用所有单选按钮。)
  2. 单击重置(启用所有单选按钮并选中每日单选按钮。)

这里没有在 Firefox 上选中 Daily 单选按钮。

(如果单选按钮发生变化还有一些其他的程序,所以我需要触发Daily单选按钮的onclick事件)

HTML

    <input type="radio" name="sumType" value="1" id="day"  tabindex="1">Daily
    <input type="radio" name="sumType" value="2" id="month" tabindex="2" checked>Monthly
    <input type="button" value="Disable" onclick="disableRadio()" id="rd1"/>
    <input type="button" value="Reset" onclick="init()" id="rd2"/>

Javascript

     function disableRadio(){
       $("input[type=radio]").attr('disabled','disabled');
     }

     function init(){
       $("input[type=radio]").removeAttr("disabled");
       document.getElementById('day').click();
     }

演示>>https://jsfiddle.net/znjjjd6e/10/

【问题讨论】:

  • 在.attr 上使用.prop

标签: javascript jquery html firefox radio-button


【解决方案1】:

火狐不支持click(),可以查看SO question

所以这个document.getElementById('day').click(); 不起作用

由于您使用的是 jquery,因此您可以使用其中任何一个

function init(){
  $("input[type=radio]").removeAttr("disabled");
    //$('#day').trigger('click'); // either use this
  $('#day').attr('checked',true); // or you can also use this
}

检查Demo

【讨论】:

  • document.getElementById('day').click(); 如果您第一次单击重置按钮(即所有单选按钮都处于启用状态),则可以使用。将选中 Daily 单选按钮。
【解决方案2】:

你需要替换javascript语句:-

document.getElementById('day').click();

与

document.getElementById('day').checked=true;

并且代码也可以在 Firefox 中运行

【讨论】:

  • 谢谢@Bhawana。我只需要运行该单选按钮的 onClick 处理程序。因为该处理程序中还有一些其他程序必须运行。
【解决方案3】:

如果您只需要查看day 收音机,

$('#day')[0].click();

Fiddle

或

document.getElementById('day').checked = true;

document.getElementById('day').click() 不会触发收音机的实际鼠标点击事件,它会触发 onclick 处理程序 - Refer。

另外,prop() 的用法更好,正如Rayon 所建议的那样

【讨论】:

  • 谢谢@Shaunak D。document.getElementById('day').click() 适用于 chrome 和 IE。但不是在 Firefox 中。(诊断是从禁用状态到启用状态然后调用 onclick 处理程序)这是一个错误吗?因为如果收音机处于启用状态,则 onclick 处理程序调用有效。
【解决方案4】:

要选中任何单选按钮,只需执行以下操作:

演示:https://jsfiddle.net/hj5qw8w0/

function init(){
  $("input[type=radio]").removeAttr("disabled");
  el = window.document.getElementById('day'); // add this lines
  el.checked = true; // add this lines - it will checked the day radio button
}

【讨论】:

  • 感谢您的快速回复和您的时间兄弟@Dhara Parmar。我还需要触发存在其他程序的 onclick 事件。 e1.checked = true; 不会触发点击事件,是吗?
猜你喜欢
  • 1970-01-01
  • 2017-07-18
  • 2014-10-30
  • 2015-11-15
  • 2019-09-11
  • 2017-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-07
相关资源
最近更新 更多