2013-09-28 3 views
0

Débutant tente un simple formulaire de connexion avec jquery. Après avoir cliqué sur le bouton, s'il y a un champ de texte vide, un message d'erreur devrait apparaître, puis masquer. Cela fonctionne une fois seulement, et si le bouton est cliqué une deuxième fois, le rappel n'est pas déclenché.jquery newbie: callback tirant une seule fois

Toute aide très appréciée!

$("#login_button").click(function(event){ 
     if ($('#email').val() == "" || $('#password').val() == "") { 
      event.preventDefault(); 
      $("#err_msg") .addClass("ui-state-error ui-corner-all") 
        .text("Insert your email address and password") 
        .show("Blind", 500, callback); 
     } 

     function callback() { 
      setTimeout(function(){ 
       $("#err_msg").removeAttr("style").fadeOut(); 
      }, 1000); 
     }; 
    }); 


    <div id="err_container"> 
     <div id="err_msg" ><%= errReason %></div> 
    </div> 
    <form id="login_form" name="login_form" method="post" 
     action="<%=request.getContextPath()%>/loginhandler"> 
    <fieldset> 
     <legend>&nbsp;USER LOGIN&nbsp;</legend> 
    <div> 
     <label for="email">Email: </label> 
     <input type="text" id="email" name="email" /> 
    </div> 
    <div> 
     <label for="password">Password: </label> 
     <input type="password" id="password" name="password" /> 
    </div> 
    <div> 
     <button id="login_button" 
      class="ui-button ui-button-text-only ui-widget ui-state-default ui-corner-all" type="submit">&nbsp;Login&nbsp; 
     </button> 
    </div> 
    </fieldset> 
    </form> 

Répondre

0

Il y a une erreur dans vous appelez à .Show(), il devrait être:

$("#err_msg").addClass("ui-state-error ui-corner-all").text("Insert your email address and password").show(500, callback); 

Voir cette jsFiddle de travail:

http://jsfiddle.net/UxUap/

+0

Beaucoup Merci de remarquer que en dehors! J'ai eu une majuscule "B" pour l'effet "aveugle". Stupide que je suis. – user988971