javascript
  • jquery
  • twitter-bootstrap
  • 2014-09-24 67 views 0 likes 
    0

    我使用Bootstrap 3創建模式窗體。在用戶點擊按鈕打開模式之前,有一個字段驗證。Bootstrap模式在阻止打開後不顯示

    如果有效,則顯示模態,否則會阻止顯示模態。

    問題出在第二次機會,用戶點擊按鈕,模態將不會顯示。 如何解決這個問題?

    代碼顯示模式,並防止模被所示:jsfiddle

    $("#btnLookupClient").click(function (e) { 
        if ($("select[name='OfficeID'] option:selected").index() <= 0) { 
         alert("Please select office"); 
         $("#OfficeID").focus(); 
         $("#clientModal").on("show.bs.modal", function (e) { 
          return e.preventDefault() // stops modal from being shown 
         }); 
        } else { 
         var url = '@Url.Content("~/Client/Search?officeID=")' + $("#OfficeID").val(); 
         $.get(url) 
          .done(function (data) { 
           $("#lookup-client-container").html(data); 
           $("#clientModal").modal(show = true, backdrop = true); 
          }); 
        } 
    }); 
    
    +0

    你可以展示你的HTML和小提琴? – 2014-09-24 10:08:09

    +0

    @ Jake745'http:// jsfiddle.net/rsxb8tku /' – Willy 2014-09-24 10:20:06

    回答

    1

    使用one()而不是on()。

    $("#clientModal").one("show.bs.modal", function (e) { 
          return e.preventDefault() // stops modal from being shown 
         }); 
    

    在這裏看到:http://jsfiddle.net/akcbj4n5/1/
    參考:Difference between jQuery.one() and jQuery.on()

    +0

    解決了,謝謝@Ankit。你爲什麼使用'debugger;'? – Willy 2014-09-24 10:48:05

    +0

    謝謝指出,它不是必需的。刪除它。 – Ankit 2014-09-24 10:54:38

    1

    當警報被顯示您綁定的preventDefault到顯示模式,因此將不會被再次顯示的情況下,即使驗證通過。

    我建議使用。一()函數代替。對()http://api.jquery.com/one/

    而且你是模態的火,而不必因爲你設置的切換來調用它的JavaScript模態和目標到模式ID。

    相關問題