2011-02-26 31 views

回答

-1

使用cols屬性中的textarea

<textarea name=myText wrap=physical cols=20 rows=4></textarea> 

更新:

<SCRIPT LANGUAGE="JavaScript"> 

function textCounter(field,maxlimit) { 
if (field.value.length > maxlimit) // if too long...trim it! 
field.value = field.value.substring(0, maxlimit);  
} 

</script>  

<body> 
<textarea name=message wrap=physical cols=20 rows=4 onKeyDown="textCounter(this.form.message,125);" onKeyUp="textCounter(this.form.message,125);"></textarea> 
</body> 
+0

它不會限制任何東西,它只會影響控制的呈現方式。即控制器的寬度。 – stefan 2011-02-26 07:12:08

+0

這將檢查整個文本區域,我不會檢查每一行的最大長度 – user630209 2011-02-26 07:35:15

1

不幸的是,除非你需要支持只有少數瀏覽器(這樣是不容易在JavaScript中執行一)。複雜的是,當確定新的按鍵事件是否應該實際上導致可打印字符被附加時,您必須知道textarea中的光標位置是否在不能接受任何新字符的行中。問題在於不同的瀏覽器有不同的方法來確定textarea中的光標位置。

如果建議使用jQuery和fieldSelection plugin並設置有問題的textarea的事件處理程序如下:

var maxChars = 20; 
var textarea = document.form1.textarea; 
textarea.onkeypress = function(ev) { 
    // Trim any lines with length > maxChars. 
    var lines = textarea.value.split(/\r?\n/); 
    for (var i=0; i<lines.length; i++) { 
    if (lines[i].length >= maxChars) { 
     lines[i] = lines[i].substr(0, maxChars); 
    } 
    } 
    textarea.value = lines.join("\n"); 
    // Determine if the keypress event should succeed. 
    var keyPressZeroWidth = (ev.keyCode == 13) || //... 
    var keyPressWouldMakeLineTooLong = // fieldSelection usage here... 
    return keyPressZeroWidth || !keyPressWouldMakeLineTooLong; 
}; 
+0

你不需要在按鍵上做它,你可以在後期做到這一點,如果需要裁剪整個值。 – stefan 2011-02-26 14:10:53

+0

@stefan - true,雖然任何鍵入超過最大長度的鍵在鍵被釋放之前會短暫可見,但它會起作用。此外,如果除了最後一列之外的任何字符都被輸入,它將被插入並修剪最後一個字符,除非您跟蹤光標位置。 – maerics 2011-02-27 09:43:03