[英]How to override onclick event of HTML select tag?
我已覆盖我的选择代码上的click事件。 当我单击我的选择标记作为默认标记时,将显示选项列表。 但是,当我单击选择标记时,我必须自定义该列表并做其他工作。
我该如何实现?
请看下面的代码:
<!DOCTYPE html>
<html>
<body>
<select id="selectId">
<option value="volvo">Volvo</option>
<option value="saab">Saab</option>
<option value="opel">Opel</option>
<option value="audi">Audi</option>
</select>
<script>
document.getElementById("selectId").onclick = function () {
alert("second event");
}
</script>
</body>
</html>
这两个事件都被解雇了,但是我只想要第二个事件。
您无法覆盖select
元素onClick
因为它没有一个。 当您单击一个select
,浏览器会用您无法调和的魔法来处理它。 您也无法模拟点击。
您只能对选择执行的操作是:
size
属性。 您可以将其更改为1
以强制将其关闭,但是您会看到难看的闪烁。 option
元素的hidden
属性设置为true
您可以伪造它,如下所示:
HTML:
<div class="wrapper">
<select id="selectId" size="2" multiple="true">
<option value="volvo" hidden="true">Volvo</option>
<option value="saab" hidden="true">Saab</option>
<option value="opel" hidden="true">Opel</option>
<option value="audi" hidden="true">Audi</option>
</select>
<div class="mask">Volvo</div>
</div>
使用Javascript:
$('.wrapper').click( function(event){
console.log("sdsd");
if(true){
$('#selectId').show();
$(".mask").hide();
}
event.stopPropagation();
});
$('body').click(function(){
$('#selectId').hide();
$(".mask").show();
});
CSS:
.mask{
position:absolute;
top:0;
width:100%;
height:100%;
text-align:center;
}
.wrapper{
position:relative;
display:inline-block;
min-height:23px;
min-width:62px;
vertical-align:top; overflow:hidden; border:solid grey 1px;
}
#selectId{
display:none;
padding:20px;
margin:-18px -30px -18px -8px;
}
这仅仅是一个起点。 您可以从这里构建。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.