2016-06-10 98 views
0

我需要在密碼更改時顯示成功消息,即使增加延遲時間,問題是成功消息顯示並立即消失。 爲了測試你必須給相同的密碼和確認密碼值jQuery延遲()函數不工作

下面是代碼,

<div class="modal-body"> 
    <div class="row"> 
     <div class="col-md-2"></div>. 

      <!-- This is the div where I display message --> 

      <div class="col-md-8" id="alert-msg" style="display: none;"> 
       <div style="text-align: center;" class="alert alert-success"> 
        <strong>Success! Your Request Has Been Submitted!!</strong> 
       </div> 

      </div> 
     </div>  

    <form class="form col-md-12 center-block" id="pass" method="GET" action="index.php"> 
      <div class="form-group"> 
       <input type="password" class="form-control input-lg" placeholder="Password" name="pass1" id="f_pass"> 
      </div> 
      <div class="form-group"> 
       <input type="password" class="form-control input-lg" placeholder="Confirm Password" name="pass2" id="c_pass"> 
      </div> 
      <div class="form-group"> 
       <button type="submit" id="msg-sub" class="btn btn-primary btn-lg btn-block">Submit</button>     
      </div> 
    </form> 
</div> 

這是腳本的一部分,

<script> 
    $("#msg-sub").click(function(){ 
      var pass1= $("#f_pass").val();    
      if(pass1 !=='') { 
       $('#alert-msg').show(0).delay(3000).hide(0);  
      } 
    });   
</script> 

這裏是url

請幫助我,謝謝!

+0

可以使用帶淡出「消失的東西」:$(「#警報的味精」)。 fadeout(3000) – monterico

+0

順便說一句,使用'.show()'和'.hide()'確實會造成*輕微*的性能損失。如果你只是偶爾使用它,那麼這並不是一個問題,但要注意的是,調用它會導致你的頁面變慢。 – gcampbell

+0

您是否嘗試過非持續時間for.show()和.hide()?零持續時間可能不會被添加到動畫隊列中。 – nnnnnn

回答

1

錯誤是與script,你需要把它包裝在jQuery .ready方法。您還需要通過使用event.preventDefault()

<script> 
$(document).ready(function(){ 
    $("#msg-sub").click(function(e){ 
    var pass1= $("#f_pass").val();    
    if(pass1 !=='') { 
     $('#alert-msg').css('display', 'block').delay(3000).fadeOut(600);  
    } 
    e.preventDefault(); 
    }); 
});   
</script> 

防止點擊處理程序傳播這裏的codepen鏈接:http://codepen.io/anon/pen/vKLdJj

+0

在您的示例中,消息應該淡入淡出 –

+0

我剛剛更新了帶淡入淡出效果的codepen,並且還有一個延遲,以便用戶可以在離開之前看到成功消息。 – akinjide

+0

目前'e'缺少 – devnull69

0

問題是,由於該點擊位於submit按鈕上,因此觸發了submit事件。在您的點擊處理程序中返回false以停止傳播。這工作。

$("#msg-sub").off().click(function(){ 
      var pass1= $("#f_pass").val();    
      if(pass1 !=='') { 
       $('#alert-msg').show(0).delay(3000).hide(0);  
      } 
      return false; 
    });   
+0

或將按鈕的類型更改爲'button' – devnull69

+0

@ devnull69上述代碼正常工作,但我需要處理引導表單驗證,這將在更改按鈕類型時受到影響。是否有任何替代方法可以在不更改按鈕的情況下實現 –