2011-10-05 2 views
0

J'ai un peu de jQuery que j'ai utilisé pour définir le texte par défaut dans une boîte de recherche, supprimer le texte lorsque l'utilisateur entre dans la boîte de recherche, puis rajoute le texte si la recherche boîte perd le focus. Le code est le suivant:jQuery 1.6.2 Remplacer le texte ne fonctionne pas

//global vars 
var searchBox = jQuery("#plc_lt_mpHeaderContent_SiteSearch_txtWord"); 
var searchBoxDefaultText = "Keyword, Title, Name"; 

searchBox.val('Keyword, Title, Name'); 

//searchbox show/hide default text if needed 
searchBox.focus(function() 
{ 

    if (jQuery(this).attr("value") == searchBoxDefaultText) jQuery(this).attr("value", ""); 

}); 

searchBox.blur(function() 
{ 

    if (jQuery(this).attr("value") == "") jQuery(this).attr("value", searchBoxDefaultText); 

}); 

Ce code est lancé dans le jQuery (document) .ready (function()). Le problème est que cela fonctionne comme prévu dans jQuery 1.4.2, mais quand j'essaye le même code dans jQuery 1.6.2 cela ne fonctionne pas. Je me demande ce que je dois faire pour le rendre conforme au 1.6.2. Toute aide est grandement appréciée.

Merci

+0

Pouvez-vous être plus précis? Qu'est-ce qui ne fonctionne pas? Les gestionnaires d'événements ne sont-ils pas appelés? Est-ce que la comparaison n'évalue pas à vrai? La valeur n'est-elle pas définie? – Malvolio

+0

La suppression/l'ajout de texte sur la mise au point et le flou était le problème, désolé de ne pas le dire correctement. Je vais essayer val. Je suis sûr que ça va le réparer. –

Répondre

1

Jquery 1.6 mise à jour a changé la façon dont fonctionne attr. Maintenant, vous devez utiliser un accessoire à la place. Notes de version ici http://blog.jquery.com/2011/05/03/jquery-16-released/

Encore mieux serait d'utiliser .val(), comme ceci:

searchBox.focus(function() 
{ 

    if (jQuery(this).val() == searchBoxDefaultText) jQuery(this).val(""); 

}); 

searchBox.blur(function() 
{ 

    if (jQuery(this).val() == "") jQuery(this).val(searchBoxDefaultText); 

}); 
0

Habituellement, vous dites jQuery(this).val("") au lieu de jQuery(this).attr("value", "") - que ce soit votre problème, je ne sais pas.

0

Au lieu de jQuery (this) .attr ("valeur"), j'utiliser:

jQuery(this).val();      // for getting value 
jQuery(this).val(searchBoxDefaultText); // for setting value 

Cela dit, je vous recommande également de regarder dans l'espace réservé HTML5 attribut (pour compatible navigateurs), puis en ajoutant jQuery.hint (ou l'un des nombreux plugins similaires) pour les navigateurs non-HTML5. Ne réinventez pas la roue.

1

changer la .attr() à .VAL()

searchBox.focus(function() 
{ 
if ($(this).val() == searchBoxDefaultText) 
{ 
    $(this).val(); 
} 
}); 

searchBox.blur(function() 
{ 
if ($(this).val()=="") 
    { 
    $(this).val(searchBoxDefaultText); 
    } 
});