2010-12-15 2 views
1

J'ai une entrée de recherche avec une valeur par défaut "Rechercher".Jquery renvoie la valeur d'entrée par défaut lors de la mise au point

alt text

Lorsque je me concentre sur l'entrée de la valeur efface.

$(document).ready(function(){ 
    $('#search').focus(function() {   
     if($(this).val() == "Search for") 
     $(this).val(''); 
    }); 
}); 

Si vous ne tapez rien à la recherche, ce serait une bonne façon de retourner la valeur par défaut « Chercher » valeur en se concentrant sur?

Répondre

1

Pourquoi ne pas utiliser un watermark plugin si vous utilisez déjà jQuery? Pourquoi le besoin d'une roue réinventée?

Si vous devez le faire vous-même,

$(document).ready(function(){ 
    $('#search').focus(function() {   
     if($(this).val() == "Search for") 
     $(this).val(''); 
    }).focusout(function() { 
     if($(this).val() === '') 
     $(this).val('Search for'); 
    }); 
}); 
+1

Up vote pour le code, semble un peu beaucoup à ajouter un plug-in pour 4 lignes de code. –

+0

Merci le code fonctionne! Je suis d'accord avec matt. Le plugin est un peu trop. –

1

ce que sur l'utilisation focos sur

$("#search").focusout(function() { 
$(this).val('Search for'); 
}); 

ou flou

$('#search').focus(function(){ 
// focus logic goes here 


}).blur(function(){ 

    $(this).val('Search for'); 

}); 
1

Qu'en est-il de la même chose, mais « inversé »?

$('#search').blur(function() { 
    if($(this).val() == "") { 
     $(this).val('Search for'); 
    } 
}); 
+0

bonne idée mais j'ai encore besoin d'effacer la valeur par défaut sur le flou –

+0

Qu'en est-il du cas où l'utilisateur clique d'abord dans la boîte de recherche? –

+0

Mon idée était d'ajouter ceci au code déjà posté ... – ibito

2

Voici un petit morceau de code pour vous. Il utilisera la méthode de données jQuery pour enregistrer un bool qui indique que l'utilisateur a tapé quelque chose. Si la personne ne tape rien, elle affichera à nouveau le texte.

$("#search").blur(function() { 
    if (!$(this).data('hasTyped')) { 
     $(this).val('Search for'); 
    } 
}).keyup(function() { 
    $(this).data('hasTyped', this.value.length); 
}).focus(function() { 
    if (!$(this).data('hasTyped')) { 
     $(this).val(''); 
    } 
}); 

Exemple: http://jsfiddle.net/jonathon/dbbBh/

+0

+ bolster pour écrire le code complet, très sympa. – kobe

+0

1up par exemple! Merci! Votre code a cependant 1 inconvénient. Lorsque vous effacez l'entrée utilisateur, "Rechercher" ne réapparaît pas. –

+1

:) Trié - juste changé en réglant les données à la longueur de la valeur, plutôt que «vrai». Si la valeur est de longueur nulle, 'hasTyped' est défini comme une valeur Falsey –

Questions connexes