以下代码在IE中运行良好,但不能在FF或Safari中运行.我无法为我的生活工作,为什么.如果选择“禁用2单选按钮”选项,则该代码应禁用单选按钮.如果选择“启用两个单选按钮”选项,应启用单选按钮.这两个工作…
但是,如果您不使用鼠标在两个选项(“启用…”和“禁用…”之间移动),则单选按钮似乎不会被禁用或启用正确,直到您点击其他任何地方在页面上(不在单选按钮本身).
如果任何人有时间/好奇/感觉有帮助,请将下面的代码粘贴到html页面,并将其加载到浏览器中.它在IE中工作得很好,但问题出现在FF(在我的情况下为3)和Safari,都在Windows XP上.
<html> <head> <script language="javascript"> 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; } } } </script> </head> <body> <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> </body> </html>
解决方法
要在使用键盘时使FF模拟IE的行为,可以在选择框上使用keyup事件.在你的例子中(我不是这样一个附加事件处理程序的粉丝,但这是另一个话题),就像这样:
<select name="user" id="selUser" onchange="javascript:SetLocationOptions()" onkeyup="javascript:SetLocationOptions()">