0

テキストエリアがあり、300 文字のみを許可する必要があります。を使用して、キーボードプレスイベントを介して制御できます

onkeydown="limitText(this,300);" 
onkeyup="limitText(this,300);

limitText次のとおりです

limitText = function (limitField, limitNum) {
    if (limitField.value.length > limitNum) {
        limitField.value = limitField.value.substring(0, limitNum);
    }
},

しかし、これを介してマウスクリックの貼り付けを制御することはできません....これに関するアイデアを共有してください。注意:インターネットでいくつかの解決策を確認しましたが、解決できませんでした。私はそれが小さな問題であることを知っていますが、jQueryを初めて使用するため(Web世界全体に事実)、適切な場所でpingを実行できません.....

4

2 に答える 2

5

すべての入力を処理するために、最新のブラウザにはoninputイベントがあります

このイベントを使用して要求したことを行うサンプルを次に示します。

$('.limited').bind('input',function() {
    var $t=$(this);
    var max=$t.data('maxchars');
if ($t.val().length>max) {
    $t.val($t.val().substr(0,max));
}
});​

デモ

古いブラウザーの場合は、keyup、keydown + onpaste を使用する必要があります。

$('.limited').bind('keyup keydown paste',function(e) {
    var $t=$(this);
    setTimeout(function(){ 
    var max=$t.data('maxchars');
if ($t.val().length>max) {
    $t.val($t.val().substr(0,max));
}
    },0);
});​

古いブラウザのデモ

于 2012-12-10T06:44:27.220 に答える
2

JavaScriptを介してテキストエリアの長さを制御することは、HTMLがすでにそれをすぐにサポートしているため、実際には賢い解決策ではありません:)

http://www.w3schools.com/tags/att_textarea_maxlength.asp

<textarea maxlength="50">
  Enter text here...
</textarea>

これが古い機能なのか、HTML5によって発明されたものなのかは100%わかりません。私見それはいくつかの改訂以来すでに利用可能でした。しかし、w3schoolsはtextareasの新機能だと言っています。

PS:これは私が数ヶ月前に書いたものです:https ://github.com/sdepold/jquery.char-counter 。基本的には、テキストエリアに挿入された文字の数を監視し、多すぎる文字をすべて切り取ります。また、charカウンターを取得します。

PPS:jquery.char-counterのデモ:http://jsfiddle.net/TBDue/

于 2012-12-10T06:36:26.740 に答える