当输入文本框处于焦点时,如何禁用mouseleave和mouseenter?

时间:2013-11-15 16:31:08

标签: input hover focus blur mouseleave

这就是事情。

我有两个输入框。狗和猫。 如果我将鼠标悬停在狗身上,狗和猫都会变绿。工作良好。 如果我在Dog上单击鼠标,Dog和Cat都会变黄。工作良好。 随着狗的焦点,狗和猫应该保持黄色,即使我可以在屏幕上移动我的鼠标。

但是,我的问题是,当Dog处于聚焦状态时(I-beam光标在Dog输入框内闪烁),将鼠标移出Dog会激活mouseleave。而不是狗和猫保持黄色(这是我想要的),猫和狗都变成蓝色。然后,当我做一个鼠标悬停时,猫和狗都变成了绿色。但是如果Dog处于焦点状态(即当I-Beam在Dog内部闪烁时),我希望猫和狗都保持黄色。

为什么我希望狗和猫在I-beam内部闪烁时始终保持黄色Dog是这样的:用户点击目标输入框(Dog)后,他将使用他的双手在键盘上打字。在这样做时,他可以将鼠标移到一边,鼠标光标可以移出输入框Dog。我仍然希望Dog和Cat都是黄色的(就像点击Dog时一样),这样用户就可以专注于两个输入框。不幸的是,我的代码就像它一样(见下文和我的JSFiddle),我没有得到我想要的东西。救命啊!?

这是我的代码。

HTML

<input type="text" value="Rover" id="dog" />

的Javascript

$("#dog").focus(function() {
   $("#dog").css("background-color","yellow");
   $("#cat").css("background-color","yellow");
});

$("#dog").hover(function() {
   $("#dog").css("background-color","green");   
   $("#cat").css("background-color","green");    
});

$("#dog").mouseleave(function() {
    $("#dog").css("background-color","blue");   
    $("#cat").css("background-color","blue");      
});


$("#dog").blur(function() {
    $("#dog").css("background-color","white");
    $("#cat").css("background-color","white");
});

这是我的傻瓜: http://jsfiddle.net/frankiekam/A586v/5/

我已经在我的代码中尝试了bind(),unbind()以及(但是:hover),但它们不起作用。我认为这只是我。这里需要一些帮助。任何人吗?

Frankie Kam,马来西亚。

0 个答案:

没有答案