2010-04-09 5 views
1

J'essaie d'afficher un message en span. Mais ça ne fonctionne pas.Pourquoi ma jquery ne fonctionne pas pour une balise span?

<script type="text/javascript"> 
    $(document).ready(function(){ 
      /****************************First Name validation******************************/ 
     $("#txtFirstName").bind("focusout",function(){ 
       if($(this).val()=="" || $(this).val()=="First Name") 
        { 
        $(this).siblings("span[id*='error']").text("First Name Required"); 
        $(this).val("First Name"); 
        } 
      }); 

     $("#txtFirstName").bind("focusin",function(){ 
       if($(this).val()=="First Name") 
        { 
        $(this).siblings("span[id*='error']").show("slow").text(""); 
        $(this).val("");      
        } 
      }); /********************End First Name validation*****************************/ 
    }); 

Voici mon code html pour le code ci-dessus

<td><input id="txtFirstName" type="text" value="First Name" runat="server"/><span class="error"></span></td> 

Répondre

4

Vous devez utiliser class au lieu de id:

$(this).siblings("span[class*='error']").text("First Name Required"); 

Mais si le nom complet de la classe est toujours error vous pouvez simplement utiliser span.error ou même mieux, si le span vient toujours après la input, utilisez .next():

$(this).next().text("First Name Required"); 
+0

Le downvote est vraiment inutile. Oui, j'avais en partie tort avant mais au tout début, il y avait en effet un ']' manquant. Et j'ai corrigé ma réponse. Et ceux qui downvote sans commentaire sont .... eh bien il n'y a plus rien à dire à ce sujet. –

+1

+1 pour corriger une injustice :) –

+0

@Nick Craver: Merci Hehe ... Je vous ai aussi mis à jour, peut-être que je devrais commenter que;) Btw la vidéo que vous avez lié à l'un de vos commentaires était vraiment intéressant. Je vous remercie! –

6
$(this).siblings("span.error").text("First Name Required"); 
0

Pour l'essai de sélection span: span.error

$(this).siblings("span.error").text("First Name Required"); 
3

Ivo a raison, vous avez besoin span.error pour un sélecteur dans ce cas. Comme une note de côté cependant, vous pouvez simplifier un peu le code général avec enchaînant et en utilisant des .focusin() et .focusout() raccourcis:

$(function(){ 
    $("#txtFirstName").focusin(function(){ 
     if($(this).val()=="First Name") 
      $(this).val("").siblings("span.error").hide(); 
    }).focusout(function(){ 
     if($(this).val()=="" || $(this).val()=="First Name") 
     $(this).val("First Name").siblings("span.error") 
       .text("First Name Required").fadeIn(); 
    }); 
}); 
+0

+1 pour l'amélioration du code :) –

Questions connexes