2013-09-28 47 views
0

新手试图用jquery简单登录表单。jquery newbie:回调只触发一次

单击按钮后,如果有空白文本字段,应显示错误消息,然后隐藏。它只工作一次,如果再次单击该按钮,则不会触发回调。

任何帮助非常感谢!

$("#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> 

回答

0

有一个在你打电话.Show(), 错误应该是:

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

看到这个工作的jsfiddle:

http://jsfiddle.net/UxUap/

+0

许多感谢您指出了出来了!对于“盲”效应,我有一个大写的“B”。愚蠢的我。 – user988971