2013-06-04 22 views
0

我正在動態創建textareas。我想輸入它,直到頁面限制達到之後,我怎麼能不允許在textarea中鍵入?誰能幫忙?如何在使用jquery或jquery-mobile達到頁面大小限制時停止在textarea中輸入?

$("#page1").click(function (event,data) {    
    var newTextAreaDiv = $(document.createElement('div')) 
    .attr("id", 'TextAreaDiv' + numTextAreaCounter); 
    newTextAreaDiv.html('<textarea rows="1" id= "textbox' + 
     numTextAreaCounter+ ' " '+'style="display:block; max-width:50%; 
     max-height:50%;height:50px;width:100px; ></textarea>');    

      newTextAreaDiv.className='notes_textarea'; 
      newTextAreaDiv.appendTo("#page_right");   
      $("#notesfullpage").trigger('create'); 
      numTextAreaCounter++; 
}); 
+0

什麼是你的頁面限制?返回false的 – Gajotres

回答

0

怎麼樣的textareamaxlength屬性>您可以添加它,並在創建元素分配所需的值。

0

這樣您就明確地停止了用戶輸入指定字符後輸入的字符。

$('#textbox' + numTextAreaCounter).keydown(function() { 
    var maxLen = $('#textbox' + numTextAreaCounter).val()).length; 
e.keyCode = (e.keyCode != 0)?e.keyCode:e.which; 
if(maxLen>50 && (e.keyCode!=8 || e.keyCode!=46))// setting exceptions for backspace and delete key press. 
     return false; 
}); 
+0

甚至不允許刪除並重新輸入。你能幫忙嗎? – user1844039

+0

已更改代碼 – Janak

0

每當用戶鍵入一個字符時,觸發按鍵事件。您甚至可以使用$('#page1').on('keypress', 'textarea', handler)來處理所有動態生成的textareas。

在您的按鍵處理程序中,您可以根據可用空間檢查textarea的高度。我不知道頁面的佈局,因此我無法提供100%準確的公式來計算可用空間,但請記住,您可以通過jquery的.height()方法或通過基本的javascript屬性如window.innerHeight。如果您需要,scrollTop屬性也可以在JavaScript中使用。

您可以設置一個標誌,當你檢測到textarea已經達到了頁面限制,並防止打開它時。

最終代碼會是這樣的

var outOfSpace = false; 

$('#page1').on('keypress', 'textarea', handler); 

$('#page1').on('keypress', 'textarea', function() { 
    if (outOfSpace) 
     return false; 
}); 

我沒有測試過這一點。綁定第二個處理函數可能是更多的跨瀏覽器,在keyup或keyup和keypress上綁定。

+0

返回false甚至不允許刪除..如何啓用刪除並能夠在限制範圍內鍵入? – user1844039

相關問題