2008-09-04 5 views

答えて

19

​​3210タグはMAXLENGTHは、少なくともではない、ほとんどの標準的なブラウザで、 INPUTタグがないという方法属性はありません。 が​​3210タグにを入力できる文字数を制限するための非常にシンプルで効果的な方法は次のとおりです。

<textarea onKeyPress="return (this.value.length < 50);"></textarea> 

注:onKeyPressいずれかのボタン、いずれかのボタンを押しを防ぐために起こっていますバックスペースキーはです。

これは、新しい文字が必要な最大長(この例では50個)に追加される前にフィールドの長さが と比較され、もう1つ空きがある場合はtrueを返し、 falseもしそうでなければ。ほとんどのイベントからfalseを返すと、デフォルトのアクションはキャンセルされます。 したがって、現在の長さがすでに50以上の場合、ハンドラはfalseを返し、 KeyPressアクションがキャンセルされ、文字は追加されません。

​​3210、 に貼付する可能性があり、このチェックを回避してKeyPressイベントを発生させません。 Internet Explorer 5以降にはonPasteイベントが含まれており、そのハンドラには チェックを含めることができます。ただし、合計数が になるかどうかを知るために、クリップボードで待っている文字の数は、 の文字数を考慮に入れる必要があります。幸運なことに、IEにはウィンドウオブジェクトからのクリップボード オブジェクトも含まれています。したがって1

<textarea onKeyPress="return (this.value.length < 50);" 
onPaste="return ((this.value.length + 
window.clipboardData.getData('Text').length) < 50);"></textarea> 

は再び、onPasteイベント及びclipboardDataオブジェクトのみ5+ IEです。クロスブラウザソリューションでは、長さをチェックして処理するには、OnChangeまたはOnBlurハンドラを使用するだけで済みます(値をサイレントに切り捨て、ユーザに通知するなど)。残念ながら、ユーザーがフィールドを離れようとしたときにのみ、このエラーは発生しません。これはあまりフレンドリーではありません。

Source

また、あなたがあなたのページに含めることができ、完成したスクリプトを含め、ここでは別の方法があります:

http://cf-bill.blogspot.com/2005/05/textarea-maxlength-revisited.html

+7

注意。 より堅牢なスニペットを使用すると、最大制限を超えてからバックスペースを使用して文字を削除することができます。 – shek

+0

おそらくそれは私と私の悪い算数ですが、私は、textareasに新しい行を使用すると、IEとFFはChromeと 'maxlength'の動作が異なるという印象を持っています。あなたのテキストに改行が含まれている場合、 '\ r \ n'と' \ n'の問題が関係しています...確かに、 'maxlength'は私の経験からWindows上でcross-browser-ishを動作させていないようです。 ..しかし、ここで何も新しい、ちょうど同じ古いバグのHTML/JS stuff ... – user2173353

5

HTML5は今maxlength attribute on <textarea>することができます。

IE < = 9とiOS Safari 8.4以外のすべてのブラウザでサポートされています。 support table on caniuse.comを参照してください。何の文字を削除することはできない - 文字の制限がヒットしたら、上に書いたonKeyPressイベント機能は、テキストエリアに入力されてから任意のテキストを防ぐことができますことを

+0

@erdomesterそれはサポートされているブラウザで動作しています。あなたは私が提供したw3cリンクでテストすることができます。 – indusBull

+0

maxlength = "500px"を使っても試してみました。しかし、あなたが提供したリンクは、私がそのコメントを投稿したときに非アクティブであったので、表示されたページは今のものよりも他の属性を表示していました。 – erdomester

+3

そのリンクはW3Cにはないので、間違った情報を出すことで知られているW3Schoolsです。 – Toby

-1
$(function(){ 
    $("#id").keypress(function() { 
    var maxlen = 100; 
if ($(this).val().length > maxlen) { 
    return false; 
} 
}) 
}); 

リファレンスSet maxlength in Html Textarea