以下代码在 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
<input type="radio" name="transfer_to" value="fund_amount2" />Other
<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/