javascript - 如何启用禁用的单选按钮?

标签 javascript html radio-button

以下代码在 IE 中运行良好,但在 FF 或 Safari 中运行不佳。我一辈子都想不通为什么。如果您选择“禁用 2 个单选按钮”选项,则代码应该 禁用单选按钮。如果您选择“启用两个单选按钮”选项,它应该启用单选按钮。这些都有效...

但是,如果您不使用鼠标在 2 个选项(“启用...”和“禁用...”)之间移动,则单选按钮不会正确显示为禁用或启用,直到您单击页面上的其他任何位置(而不是单选按钮本身)。

如果有人有时间/好奇/觉得有帮助,请将下面的代码粘贴到 html 页面中并在浏览器中加载它。它在 IE 中运行良好,但问题在 FF(在我的例子中是 3)和 Safari 中表现出来,所有这些都在 Windows XP 上。

function SetLocationOptions() {
  var frmTemp = document.frm;
  var selTemp = frmTemp.user;
  if (selTemp.selectedIndex >= 0) {
    var myOpt = selTemp.options[selTemp.selectedIndex];
    if (myOpt.attributes[0].nodeValue == '1') {
      frmTemp.transfer_to[0].disabled = true;
      frmTemp.transfer_to[1].disabled = true;
      frmTemp.transfer_to[2].checked = true;
    } else {
      frmTemp.transfer_to[0].disabled = false;
      frmTemp.transfer_to[1].disabled = false;
    }
  }
}
<form name="frm" action="coopfunds_transfer_request.asp" method="post">
  <select name="user" onchange="javascript: SetLocationOptions()">
    <option value="" />Choose One
    <option value="58" user_is_tsm="0" />Enable both radio buttons
    <option value="157" user_is_tsm="1" />Disable 2 radio buttons
  </select>
  <br /><br />
  <input type="radio" name="transfer_to" value="fund_amount1" />Premium&nbsp;&nbsp;&nbsp;
  <input type="radio" name="transfer_to" value="fund_amount2" />Other&nbsp;&nbsp;&nbsp;
  <input type="radio" name="transfer_to" value="both" CHECKED />Both
  <br /><br />
  <input type="button" class="buttonStyle" value="Submit Request" />
</form>

最佳答案

要让 FF 在使用键盘时模仿 IE 的行为,您可以在选择框上使用 keyup 事件。在您的示例中(我不喜欢以这种方式附加事件处理程序,但这是另一个主题),它将是这样的:

<select name="user" id="selUser" onchange="javascript:SetLocationOptions()" onkeyup="javascript:SetLocationOptions()">

关于javascript - 如何启用禁用的单选按钮?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6441/

相关文章:

html - 如何在网络上播放音频文件但未启用下载?

javascript - 如何将li中的内容附加到表单输入值javascript

javascript - 调用 JavaScript 函数 onClick 时,ASP 单选按钮不会被选择

javascript - 使用 webpack 加载 scss 失败

javascript - 如何在ASP.NET AJAX中进行页面初始化功能?

javascript - 使用 jQuery 淡出 HTML-Table 中的列 : Why is . fadeTo() 这么慢?

html - 防止 Coldfusion 编码 html

Android - 注册按钮点击并根据单选选择采取行动

python - 在 WTForms 中访问 RadioField 的子字段

javascript - 设置与背景更改脚本一起使用的背景