select 标签的双击事件。 Firefox 的问题
Double click event for a select tag. issue with Firefox
我有一个 select 元素,我需要在 双击 时触发一个事件。
这是 html 代码
<select class='my_field' unselectable='on' onselectstart='return false;' onmousedown='return false;'>
<option value="test">test</option>
</select>
这里是 JavaScript 代码
$( document ).ready(function() {
$(".my_field").dblclick(function(e)
{
alert('double click');
});
});
在 IE 或 Chrome 等浏览器中,此事件正常运行。 但在 Firefox 中没有。
我准备了一个jsfiddle。在这个 jsfiddle 中,我还添加了一个文本输入,以表明该事件适用于 select 标签以外的字段,,甚至在 FF.
中
我不确定 dblclick 是否是标准事件。
但您可以通过更多代码轻松实现它(未测试):
$(document).ready(function(){
(function(){ // Closure. Not needed if this is the only code.
var dblClickMs = 1000; // One second. Adjust at your needings.
var fld = $(".my_field");
var t0 = 0;
fld.on("click", function(){
var t = (new Date()).getTime();
if (t - t0 <= dblClickMs) {
alert('double click');
} else {
t0 = t;
};
});
})();
});
我认为 jQuery 是完全跨浏览器的,本机 javascript 似乎可以工作,至少您不需要模仿实际的双击事件。
function doubleclick(){
alert('double click');
}
$( document ).ready(function() {
$(".my_field").each(function(){
var element = this;
if (this.addEventListener) {
element.addEventListener('dblclick', doubleclick , false);
} else {
element.attachEvent('ondblclick', function() {
return(doubleclick.call(element, window.event));
});
}
});
});
我有一个 select 元素,我需要在 双击 时触发一个事件。 这是 html 代码
<select class='my_field' unselectable='on' onselectstart='return false;' onmousedown='return false;'>
<option value="test">test</option>
</select>
这里是 JavaScript 代码
$( document ).ready(function() {
$(".my_field").dblclick(function(e)
{
alert('double click');
});
});
在 IE 或 Chrome 等浏览器中,此事件正常运行。 但在 Firefox 中没有。
我准备了一个jsfiddle。在这个 jsfiddle 中,我还添加了一个文本输入,以表明该事件适用于 select 标签以外的字段,,甚至在 FF.
中我不确定 dblclick 是否是标准事件。
但您可以通过更多代码轻松实现它(未测试):
$(document).ready(function(){
(function(){ // Closure. Not needed if this is the only code.
var dblClickMs = 1000; // One second. Adjust at your needings.
var fld = $(".my_field");
var t0 = 0;
fld.on("click", function(){
var t = (new Date()).getTime();
if (t - t0 <= dblClickMs) {
alert('double click');
} else {
t0 = t;
};
});
})();
});
我认为 jQuery 是完全跨浏览器的,本机 javascript 似乎可以工作,至少您不需要模仿实际的双击事件。
function doubleclick(){
alert('double click');
}
$( document ).ready(function() {
$(".my_field").each(function(){
var element = this;
if (this.addEventListener) {
element.addEventListener('dblclick', doubleclick , false);
} else {
element.attachEvent('ondblclick', function() {
return(doubleclick.call(element, window.event));
});
}
});
});