隐藏搜索字段代码仅执行一次

时间:2010-11-26 03:57:07

标签: javascript jquery

我正在编写一段jQuery,当用户将鼠标悬停在搜索按钮上时会显示一个搜索框,显示五秒钟,如果用户未给出搜索文本字段焦点,则会消失。

它现在只是出现,消失,然后再次出现。我的代码如下,您可以在http://emilysenger.ca

中看到它
jQuery(document).ready(function(){

    jQuery('input').blur(function(){
                jQuery('input').removeClass("focus");
        })
             .focus(function() {                
                 jQuery(this).addClass("focus")
        });

    jQuery("div#sneakySearch form input#search").css("display", "none");
    jQuery("div#sneakySearch form input#searchButton").hover(function(){
        jQuery("div#sneakySearch form input#search").fadeIn("slow");
    }, function(e){
    jQuery(e).delay(5000, 
            function(e){
                if(!jQuery("div#sneakySearch form input#search").hasClass("focus"))
                    {
                        jQuery("div#sneakySearch form input#search").fadeOut("slow");
                    }

    });
    });

});

对此的一些帮助将是 awesome 。谢谢!

1 个答案:

答案 0 :(得分:3)

我做到了这一点,它也淡化了文本框的模糊事件,并且如果文本框中有文本,它永远不会淡出。你可以看到它正常工作here

HTML:

<div id="sneakySearch">
    <form method="get" action="/">
        <input type="text" name="s" id="search">
        <input type="submit" value="Search" id="searchButton">
    </form>
</div>

和JS:

function fadeOutSearch() {
    var element = jQuery("div#sneakySearch form input#search");
    if (!element.hasClass("focus") && element.val() == "") {
        element.fadeOut("slow");
    }
}

jQuery(document).ready(function() {
    jQuery('input').blur(function() {
        jQuery('input').removeClass("focus");
        setTimeout(fadeOutSearch, 1000);
    }).focus(function() {
        jQuery(this).addClass("focus")
    });

    jQuery("div#sneakySearch form input#search").hide();
    jQuery("div#sneakySearch form input#searchButton").hover(function() {
        jQuery("div#sneakySearch form input#search").fadeIn("slow");
    }, function(e) {
        setTimeout(fadeOutSearch, 1000);
    });
});