質問する
1024 次
3 に答える
3
これは HTML5 のソリューションであり、IE9 以前ではサポートされていません (これによると) :
<textarea maxlength="255"></textarea>
おそらく IE9 (およびおそらく IE8) のサポートを終了することはできないため、standup75 が提案したように、テキストエリアでのkeydown
およびイベントのデフォルトの動作を防止して、それを JavaScript と組み合わせることをお勧めします。paste
プレーンな JavaScript でそれを行う方法は次のとおりです。
<textarea id="txtarea" maxlength="255"></textarea>
<script>
var field = document.getElementById('txtarea');
if(field.addEventListener) {
field.addEventListener('keydown', enforceMaxlength);
field.addEventListener('paste', enforceMaxlength);
} else {
// IE6-8
field.attachEvent('onkeydown', enforceMaxlength);
field.attachEvent('onpaste', enforceMaxlength);
}
function enforceMaxlength(evt) {
var maxLength = 255;
if(this.value.length >= maxLength) {
evt.preventDefault()
}
}
</script>
于 2012-09-24T16:09:02.260 に答える
2
を使用できますmaxlength="255"
(要素で許可される最大文字数を指定します)。
または、jquery here でこれを行うこともできますチュートリアルを見つけました
html
<textarea cols="30" rows="5" maxlength="10"></textarea>
jquery
jQuery(function($) {
// ignore these keys
var ignore = [8,9,13,33,34,35,36,37,38,39,40,46];
// use keypress instead of keydown as that's the only
// place keystrokes could be canceled in Opera
var eventName = 'keypress';
// handle textareas with maxlength attribute
$('textarea[maxlength]')
// this is where the magic happens
.live(eventName, function(event) {
var self = $(this),
maxlength = self.attr('maxlength'),
code = $.data(this, 'keycode');
// check if maxlength has a value.
// The value must be greater than 0
if (maxlength && maxlength > 0) {
// continue with this keystroke if maxlength
// not reached or one of the ignored keys were pressed.
return ( self.val().length < maxlength
|| $.inArray(code, ignore) !== -1 );
}
})
// store keyCode from keydown event for later use
.live('keydown', function(event) {
$.data(this, 'keycode', event.keyCode || event.which);
});
});
于 2012-09-24T16:14:39.993 に答える
2
HTML5 は maxLength 属性を提供します。それ以外の場合は、JavaScript が必要です。jQuery では、次のようにします。
maxLength = 50;
$("textarea").on("keydown paste", function(e){
if ($(this).val().length>=maxLength) e.preventDefault();
});
于 2012-09-24T16:10:17.857 に答える