简单的方法来检查输入是否在焦点上,并禁用mouseleave功能,如果为真
Simple way to check if input is in focus and to disable mouseleave function if true
我必须承认我绝对不是一个jQuery天才,但是这个看起来很简单的解决方案完全让我迷惑了。
基本上,我有一个下拉脚本在嵌套的ul上工作,以便在其父级翻转时显示。在其中一个嵌套的ul中,我有一个表单,如果在表单中输入了任何输入,我想要停止mouseleave事件。
原始代码:
$(document).ready(function() {
/*------- navigation -------*/
$('.top_menu li').hover(function(){
var index = $('.top_menu li').index(this);
if($(this).children('ul').length != 0)
{
$(this).children('ul').show();
}
});
$('.top_menu li').mouseleave(function(){
$(this).children('ul').hide();
});
$('.login_cart li,.login_cart_captu li').hover(function(){
var index = $('.login_cart li').index(this);
if($(this).children('ul').length != 0)
{
$(this).children('ul').show();
}
});
$('.login_cart li,.login_cart_captu li').mouseleave(function(){
$(this).children('ul').hide();
});
});
我真的只关心脚本的。login_cart li部分-这是其中唯一有表单的部分。
我已经尝试了一个简单的if/else语句来不隐藏输入是否有焦点,但到目前为止还没有工作。
任何人能给我任何帮助或阐明这一点将是绝对美妙的。
提前感谢!
您可以将表单元素的焦点事件绑定到一个函数,该函数将从.login_cart中解绑定mouseleave事件li:
$("#<form-id> input").focus(function() {
$(".login_cart li, .login_cart_captu li").unbind("mouseleave");
}
你只需要替换为你的表单的id或者你可以使用任何选择器来选择你的表单
jQuery 1.6及更新版本内置了:focus。没有用。Not()测试过,但是用!在前面和。is(":focus"),只是看起来更好与。not();但是两者应该是一样的。
$('.login_cart li,.login_cart_captu li').mouseleave(function(){
if ($("#<form-id> input").not(":focus")) {
$(this).children('ul').hide();
}
});
相关文章:
- 添加文字和评论功能更新Div
- JavaScript打印功能使日历停止工作
- 每当您在选择器内移动鼠标时,悬停功能就会重复
- 如何防止网页加载后自动启动功能
- 除修剪外的其他功能
- 悬停功能触发器
- 使用angularjs向浏览器发送servlet响应(下载功能)
- 删除CKEditor工具栏按钮,但不删除功能
- 异步facebook功能
- 如何将chrome扩展功能移植到移动设备(特别是jquery和trello)
- jQuery滚动功能只工作一次
- Graphiti中是否有任何工具提示功能
- React redux初始化功能,无论状态变化如何
- 在哪里可以学习ECMAScript标准中尚未包含的JavaScript功能
- 正在获取select上的功能id
- Rhino打印功能
- 使用(navigator.geolocation)检测浏览器功能错误
- 主体单击删除功能上的输入框宽度
- JQuery使用相同的功能自动完成各种输入文本
- 简单的方法来检查输入是否在焦点上,并禁用mouseleave功能,如果为真