Javascript 接收禁用选择标签的 onmousedown
我有一个带有两个单选按钮的表单:
[radio1] [radio2] [select]
<input type="radio" id="radio1" name="radio" checked/>
<br/>
<input type="radio" id="radio2" name="radio"/>
<select id="select" onmousedown="test()" disabled="disabled">
<option>aaa</option>
<option>bbb</option>
</select>
所需的行为是当勾选 radio1 时,选择框被禁用。 当 radio2 被勾选时,用户可以从选择框中选择某些内容(因此启用)。
我在 radio1 和 radio2 中有必要的事件代码来处理启用/禁用选择框,并且效果很好。
但是,我想要一个额外的行为:我单击选择框,应勾选 radio2 并启用选择框:
function test(){
document.getElementById('radio1').checked=false;
document.getElementById('radio2').checked=true;
document.getElementById('select').disabled=false;
}
但是,在禁用选择框时,永远不会调用 test()
。 还有其他事件可以做到这一点吗?
另一种解决方案是在选择框上放置透明覆盖层以处理事件(并在启用选择框时隐藏它)。
I have a form with two radiobuttons:
[radio1] [radio2] [select]
<input type="radio" id="radio1" name="radio" checked/>
<br/>
<input type="radio" id="radio2" name="radio"/>
<select id="select" onmousedown="test()" disabled="disabled">
<option>aaa</option>
<option>bbb</option>
</select>
The desired behaviour is that when radio1 is ticked, the selectbox is disabled.
When radio2 is ticked, the user is able to select something from the selectbox (hence enabled).
I have the necessary event code in radio1 and radio2 to handle enabled/disabling the selectbox, and it works nicely.
However, I wanted an additional behaviour: I click the selectbox, radio2 should be ticked and the selectbox enabled:
function test(){
document.getElementById('radio1').checked=false;
document.getElementById('radio2').checked=true;
document.getElementById('select').disabled=false;
}
However, test()
never gets called while the selectbox is disabled.
Is there some other event to do this?
The alternative solution is to put a transparent overlay over the selectbox to handle events (and hide it when the selectbox is enabled).
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我认为这是预料之中的。禁用的输入元素不会响应鼠标(和其他)事件。您可以尝试使用覆盖解决方案 - 即使选择被禁用,它也应该可以工作。
I think this is expected. Disabled input elements do not respond to mouse (and other) events. You can try with the overlay solution - it should work even if the select is disabled.