我有一个跨度和一个文本输入,彼此相邻,分别命名为“一个”和“两个”;只有一个一次显示。当您双击“一个”时,它会在显示并聚焦于“两个”时隐藏。当“两个”模糊时,它会隐藏并显示“一个”。很容易,当我按下回车键时我试图模糊“两个”时,问题就出现了。这就是我所拥有的:
.bind({'blur keyup': (function(e){
if(e.type === 'keyup' && e.keyCode !== 10 && e.keyCode !== 13) return;
$([this,$(this).prev()]).toggle(); })
})
按下回车键时,会发生切换,但在您点击任意位置时会再次触发。所以它似乎模糊不清,但“两个”保留了焦点。 Here is a fiddle has the two listeners separated (keyup and blur) as well as some extra to help highlight what's happening.
我试过
e.preventDefault()
return false
(模糊前) - >杀死其余功能(如预期的那样)return false
(模糊后) - >禁用回车键(??)或之后:
(return function(e){
- > jQuery不喜欢这种语法setTimeout
(即使时间为0) - >问题消失了问题:我该如何解决这个问题?预期的行为是按下回车键产生与模糊相同的操作。
答案 0 :(得分:1)
虽然我不确定为什么,但我被jQuery的模糊方法杀死了。我能够通过分离两个处理程序并使用JavaScript的原生模糊方法来解决我的问题。
keyup: (function(e){
if(e.keyCode===10 || e.keyCode===13){ this.blur(); }
}),
blur: (function(){
$([this,$(this).prev()]).toggle();
})
我将保持开放,直到我或其他人能够确定为什么jQuery的模糊表现为这样。