我想这样做,当点击组合框时,列表应该打开,但是应该弹出一个警告。
我有这段代码:
$('select').focus(function() {
this.blur();
window.focus();
});
$('select').click(function(){
alert('Clicked but did not open');
});
这在FF中工作正常,但在chrome中不起作用,
知道为什么吗?
提前谢谢你......
答案 0 :(得分:2)
为防止事件冒泡,您应使用preventDefault()
来实现跨浏览器兼容性。
$('select').mousedown(function(e) {
this.blur();
window.focus();
e.preventDefault();
});
答案 1 :(得分:1)
做
$('select').mousedown(function(e) {
e.preventDefault();
});
适用于Chrome,IE 9(非8)和Opera(至少版本11.61,这是我安装的版本)。它在Firefox中不起作用,不知道为什么。然而,元素上的模糊和窗口上的焦点对我来说不起作用,无论是在mousedown还是在点击上。
由得到downvoted这里两次的答案(http://stackoverflow.com/questions/1905464/html-select-dropdown)的启发,我想出了这个小变化(原来使得整个窗口闪烁,这是一个tad hideous):
$('select').mousedown(function(event) {
var $select = this;
window.setTimeout(function () {
$select.blur();
$select.focus();
//do whatever like alert("This message");
},0);
event.preventDefault();
return false;
});
现在,对于FF(我有版本10)和IE< 9,这意味着轻微的闪烁,因为下拉列表实际上打开后立即关闭,但是preventDefault可以使其在其他所有现代浏览器中都运行良好。选择是邪恶的,我不认为有一个很好的跨浏览器方式来控制下拉列表是否显示。返回false应该根据互联网上的谣言做一些事情,所以我把它留在那里,可能它在旧浏览器中工作。
P.S。:在您的问题中,您的意思是“[...]列表不打开,而是[...]”,对吧?
答案 2 :(得分:0)
$('select').click(function() {
this.blur();
window.focus();
return false;
});
添加return false works