我忽略了Firefox的keydown行为,因为按下回车键(实际上是任何键)而没有专注于特定字段将不会触发keydown事件,它只会触发按键事件.
这可能非常令人困惑,因为keydown和keyup事件使用JavaScript密钥代码,而keypress使用ASCII代码.幸运的是,13(输入/返回)对两者都很常见.
在这种情况下,使用按键的 FF有什么原因吗?有什么好处?
一旦确定,IE8就会愚蠢,因为它不允许preventDefault要求,而returnValue = false
另一个SO帖子的以下片段证明非常有用:
event.preventDefault ? event.preventDefault() : event.returnValue = false;
Run Code Online (Sandbox Code Playgroud)
在搜索解决这些问题的过程中,我一直event.keycode
对vs 感到困惑event.which
.即我使用类似于以下的switch语句做错了:
$("#class_Name").bind("keydown", function(event){
// do not test input if field controls used
switch(event.which){
case 13:
//enter key
event.preventDefault ? event.preventDefault() : event.returnValue = false;
break;
}
Run Code Online (Sandbox Code Playgroud)
以下是更好的,如果是这样,为什么?
$("body").keypress(function(event){
// stop inadvertant form submission
if (event.keycode == "13"){
event.preventDefault ? event.preventDefault() : event.returnValue …
Run Code Online (Sandbox Code Playgroud) 好的,我已经在jquery/javascript中查看了有关setInterval的几个帖子和其他地方关于答案的烦人的事情是我不知道为什么解决方案有效.
请考虑:
使用匿名函数,我们可以设置警报,重复输出"兔子":
setInterval(function(){
alert("bunnies")
},3000);
Run Code Online (Sandbox Code Playgroud)
但是如果我们想要使用非匿名函数,我们必须编写代码
的setInterval(跳,3000);
功能:
function hop(){
alert("bunnies");
}
Run Code Online (Sandbox Code Playgroud)
如果我们尝试编码:
setInterval(hop(),3000);
Run Code Online (Sandbox Code Playgroud)
跳执行但只执行一次.我不明白为什么会这样.我已经阅读了各种SO,这意味着我们需要传递对setInterval的引用.这是否意味着第一个形式setInterval(hop,3000); 通过引用传递.如果是这样可以解释一下吗?
因此我们有一个问题.显然,希望能够将参数传递给函数跳像.....
setInterval(hop("bunnies"),3000);
Run Code Online (Sandbox Code Playgroud)
功能:
function hop(msg){
alert(msg);
}
Run Code Online (Sandbox Code Playgroud)
这确实会导致调用hop并输出"bunnies",但同样只调用一次该函数.
因此,只要我能解决将参数传递给由setInterval控制的函数的唯一方法是将其合并到匿名函数中:
setInterval(function(){
hop("bunnies")
},3000);
Run Code Online (Sandbox Code Playgroud)
这传递了参数并重复执行跳跃,每隔3秒警告我们一个兔子(非常重要的是要警告兔子).
因此问题:
我可以肯定我正确地这样做了:
我有一条消息,我希望在显示之后淡出.
一旦不透明度为零,jQuery fadeOut就会设置display:none.
因此,当我想通过设置可见性再次显示相同的消息时:可见消息将不会显示,因为仍然设置了display:none.
所以这就是我做的:
$("#message6").fadeOut(600, function(){
$("#message6").css("display","");
$("#message6").css("visibility","hidden");
});
Run Code Online (Sandbox Code Playgroud)
这很好用.它似乎并不优雅.
我在这里错过了什么吗?这样做有一个简洁的方法吗?
我原本想要在单击事件中进行提交:
$("#booking_Form #submit_Booking").bind("click", function(event){.....
Run Code Online (Sandbox Code Playgroud)
然后我发现(显然)双击导致重复提交.
所以我尝试捕获并抑制它:
$("#booking_Form #submit_Booking").bind("dblclick", function(event){
return false;
});
Run Code Online (Sandbox Code Playgroud)
但单击事件仍然被触发两次.
我是否认为如果必须双击不提交两次,我必须将单击事件更改为双击事件.
或者是否有一些全局方式来关闭双击.
好吧,据我所知,到目前为止我们有两种方法
首先,我可以在给定的脚本中使用一些javascript.但这会切换右键单击所有内容.
window.oncontextmenu = function() {
return false;
};
Run Code Online (Sandbox Code Playgroud)
或者在html中可以编码
<body oncontextmenu="return false;">
Run Code Online (Sandbox Code Playgroud)
但到目前为止,我无法找到任何可以给我javascript或jquery解决方案的地方,我可以将它应用于给定的选择器.这根本不可能,还是我误解了一些东西.
我发现只需单击一下,我的子菜单会立即出现,然后是浏览器的默认菜单.我发现压制这个的唯一方法是将oncontextmenu设置为false.有更精致的解决方案吗?
进一步注意接受的答案
还使用委托在动态菜单上成功应用:
$(document).on("contextmenu", "#existing_Flavours .field_Input_Left.flavour", function(){
return false; // suppress browsers default right click menu
});
Run Code Online (Sandbox Code Playgroud) 对时间戳的补充问题- php递增时间戳错误
虽然接受DateTime类可以为我的原始查询提供解决方案,但时间戳仍然存在无法解释的方差.我真的想了解这种差异,是否还有其他这样的时间戳"调整"以及它们是如何产生的.
请考虑以下事项:
/*
* test time stamp variances
*/
$time_Stamp_1 = mktime(0,0,0,10,15,2012);echo "15/10/12: " . $time_Stamp_1;
$time_Stamp_2 = mktime(0,0,0,10,16,2012);echo "<br/>16/10/12: " . $time_Stamp_2 . "increment= " . ($time_Stamp_2 - $time_Stamp_1);
$time_Stamp_3 = mktime(0,0,0,10,17,2012);echo "<br/>17/10/12: " . $time_Stamp_3 . "increment= " . ($time_Stamp_3 - $time_Stamp_2);
$time_Stamp_4 = mktime(0,0,0,10,18,2012);echo "<br/>18/10/12: " . $time_Stamp_4 . "increment= " . ($time_Stamp_4 - $time_Stamp_3);
$time_Stamp_5 = mktime(0,0,0,10,19,2012);echo "<br/>19/10/12: " . $time_Stamp_5 . "increment= " . ($time_Stamp_5 - $time_Stamp_4);
$time_Stamp_6 = mktime(0,0,0,10,20,2012);echo …
Run Code Online (Sandbox Code Playgroud)