2013-02-26 60 views
0

我正在使用Twitter Bootstrap。在twitter引導模式窗體中未觸發的按鍵事件

我創建了一個模態窗口,它就會如預期調用。

這裏面模態,有一個形式:

<div id="initialSurveyInfo" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="modalId" aria-hidden="true"> 
    <div class="modal-header"> 
     <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button> 
     <h3 id="modalId">Initial Survey Information</h3> 
    </div> 
    <div class="modal-body"> 
     <form class="form-horizontal"> 
      <div class="control-group"> 
       <label class="control-label" for="surveyTitle">Survey Title :</label> 
       <div class="controls"> 
        <input type="text" id="surveyTitle"> 
        <span class="help-inline muted"><span class="char-limit">36</span> character(s) left</span> 
       </div> 
      </div> 
      <div class="control-group"> 
       <label class="control-label" for="surveyDesc">Description:</label> 
       <div class="controls"> 
        <textarea rows="5"></textarea> 
       </div> 
      </div> 
     </form> 
    </div> 
    <div class="modal-footer"> 
     <a href="#" class="btn" data-dismiss="modal" aria-hidden="true">Cancel</a> 
     <a href="/createSurvey" class="btn btn-primary continue">Continue</a> 
    </div> 
</div> 

對於輸入時,用戶被限制爲僅36個字符。超過36個字符,我想禁用「繼續」按鈕。
我有輸入旁邊的當前字符計數。

我的jQuery代碼來處理是這樣的:

$(document).ready(function() { 

    var calculate = function() { 
     var chararcters = $("#surveyTitle").val().length; 

     var remaining = 36 - characters; 

     if (remaining >= 0) { 
      $(".char-limit").val(remaining); 
      if ($(".continue").hasClass("disabled") === true) { 
       $(".continue").removeClass("disabled"); 
      } 
     } else { 
      $(".continue").addClass("disabled"); 
     } 
    }; 

    $("#surveyTitle").keyup(calculate); 
    $("#surveyTitle").change(calculate); 
}); 

不幸的是,KEYUP()和改變()不被解僱的事件/方法。因此,剩餘字符數不會減少,並且當字符數超過時,「繼續」按鈕也不會被禁用。
我用on('keyup', function)替換了keyup - 這也行不通。

我如何能到KEYUP事件做出響應的任何想法 - 主要的問題是如何改變在這種情況下「字符#左」?

我使用AngularJS太多,但我不認爲這是無論如何影響(模態窗口是基於一些以前的行動,AngularJS加載一個視圖模板)

回答

2
on('keyup','#surveyTitle', function) { 

} 


$("body").on('keyup', "#surveyTitle", calculate); 

你嘗試過這樣的.. ?

+0

幾乎是正確的。我需要將'$('body')'選擇器添加到on方法。請參閱下面的答案。 – callmekatootie 2013-02-27 14:51:31

+0

所以你的答案適合你..? – sasi 2013-02-27 15:10:19

+0

是的。有用。我跟隨你的領導,發現github問題,這也提到了正確的方法來做到這一點。 – callmekatootie 2013-02-28 04:12:38