2014-10-17 45 views
0

我在TextArea詢問有關限制字符的大多數問題,我不希望這樣。我想知道如何將TextArea html元素的可編輯區域限制爲實際的textarea本身。這甚至是可能的。將TextArea中的文本限制爲TextArea的實際區域

例如:

說我有一個TextArea是30列4行。您可以將此區域中的文字限制爲120個字符,但這不會阻止用戶返回5次,並且已經超過了我爲其設置的給定區域。我不想要一個滾動條出現。

是否有任何JavaScript可以解決這個問題?

+0

你的極限,然後將兩件事情:1。 共120個字符 - 或 - 2. 4線(4 \ n個字符) 你應該寫客戶端驗證那效果 – spojam 2014-10-17 21:20:19

+0

它不那麼簡單。如果用戶輸入了兩次輸入,然後寫入一段佔用3行的段落,則輸入的字符少於120個字符,並且只有兩個回車符。 – Madonkadonk 2014-10-17 21:58:17

回答

1

複製文成visibility: hidden分度,字體樣式等於文本區域和max-width,不會讓他走超出你的列數。如果文本隱藏副本的高度超出了限制,請刪除已添加的文本。

以下是關閉您需要什麼。不幸的是,它沒有nix第5行(在第4行輸入後),直到你輸入了一些東西,並且它可以在第5行留下幾個字符(如果你換行到第4行的第5行) 。我不確定如何進一步改進技術。

var $measure = $('#measure'); 
 
var $input = $('#input'); 
 
var $output = $('#measurement'); 
 

 
var existingText = ''; 
 
$input.on('keyup', function(event) { 
 
    $measure.html($input.val()); 
 
    $output.val($measure.width() + 'x' + $measure.height() + 'px'); 
 
    if ($measure.height() > 60) { 
 
     $input.val(existingText.trim()); 
 
     $measure.html(existingText.trim()); 
 
    } 
 
    existingText = $input.val(); 
 
});
#measure 
 
{ 
 
    position: absolute; 
 
    visibility: hidden; 
 
    height: auto; 
 
    width: auto; 
 
    white-space: pre-wrap; 
 
    
 
    /* set font style equal to style of textarea */ 
 
    font-family: monospace; 
 
    font-size: 13px; 
 
    letter-spacing: normal; 
 
    line-height: normal; 
 
    word-spacing: 0; 
 
    word-wrap: break-word; 
 
    max-width: 221px; 
 
    border: 1x solid black; 
 
    margin: 2px; 
 
    padding: 2px; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<textarea id="input" cols="30" rows="4"></textarea> 
 
<div id="measure"></div> 
 
<br> 
 
<input type="text" disabled="disabled" id="measurement"/>