jquery on blur,但专注于另一个

时间:2011-02-18 06:43:37

标签: jquery focus blur

我有一种情况,我有一个隐藏的div,有两个输入元素,默认情况下隐藏,只有在我悬停的情况下才会显示,如果我将鼠标悬停,则会消失。现在我希望div不会消失,如果其中一个输入元素被聚焦并且如果模糊则消失。我已经解决了这个问题,直到焦点从一个输入转移到另一个输入,div才会消失,我不想让它消失,因为其中一个输入仍然是聚焦的。

这是我的代码:

// code with the problem I think.
$('#inputText1, #inputText2').live("blur", function() {
    if ($('#myDiv').is(":visible")) {
        if (!$(this).hasClass("jqTransformInputWrapper_focus")) {
            $('#myDiv').fadeOut("slow");
        }
    }
});

// hover to show and hide the div
$(".visibleDiv").hover(
    function() {
        $('#myDiv').fadeIn("slow");
    },
    function() {
        if(!$(this).find(".jqTransformInputWrapper").hasClass("jqTransformInputWrapper_focus")) {
            $('#myDiv').fadeOut("slow");
        }
    }
);

我的Html:

<div class="visibleDiv">
    hover me
    <div id="myDiv">
        <input name="inputText1" id="inputText1" type="text" />
        <input name="inputText2" id="inputText2" type="text" />
    </div>
</div>

BTW,我正在使用jqTransform作为输入元素。

2 个答案:

答案 0 :(得分:1)

试试这个,

// code with the problem I think.
$('#inputText1, #inputText2').live("blur", function() {

    if ($('#myDiv').is(":visible")) {
        if (!$(this).hasClass("jqTransformInputWrapper_focus")) {
            $('#myDiv').fadeOut("slow");
        }
    }

}).live("focus",function(){
    $('#myDiv').stop(true,true).show();
});

答案 1 :(得分:0)

给一些类输入框并在那个

上应用jQuery
<div class="visibleDiv">
    hover me
    <div id="myDiv">
        <input name="inputText1" id="inputText1" type="text" class="inputbox" />
        <input name="inputText2" id="inputText2" type="text" class="inputbox"/>
    </div>
</div>


// now this will work
$('.inputbox').live("blur", function() {
 // u can also use this
 // if($(this).parent().is(":visible") )
    if ($('#myDiv').is(":visible")) {
        if (!$(this).hasClass("jqTransformInputWrapper_focus")) {
            $('#myDiv').fadeOut("slow");
        }
    }
});

注意:使用delegate代替实时