11

ユーザーが書くことができる量を制限したいことがよくありますが、ここでは特別なサイズのボックスに収まる必要があるため、特定の高さを超える場合は文字の追加を無効にしたいと考えています. これが私がしたことです:

var over;
$('textarea').keypress(function(e){
    var key = e.charCode ? e.charCode : e.keyCode ? e.keyCode : 0;
    var t = $(this).val();
    jQuery('<div/>', {
        style: "visibility:hidden",
        text: t,
        id: "test"
    }).appendTo('body');
    var h = $('#test').height();
    if(h >= 100){
        over = true;
    }
    else{
        over = false;
    }
    if(over){
        //code goes here
    }
    $('#test').remove();
});

here から制限コード(「コードはここに入る」コメントがある場所に何が入るか)を取得しましたが、ほとんど機能します。

問題は 1 つだけです。

誰かがコピーして貼り付けた場合、複数の文字を配置できるため、制限を超えてしまう可能性があります。

この問題を解決するにはどうすればよいですか?

jsfiddle

4

4 に答える 4

1

フィールド内のテキストが変更されるたびに関数を起動する場合は、次の回答に従ってinput、イベントにバインドできます。propertychange

このような:

$('#descrip').on('input propertychange', function(e){

これにより、たとえばユーザーがマウスを使用してコンテンツを貼り付けたときに、コードが確実に実行されます。

制限を超えるコンテンツを入力しないようにすることについては、入力したコンテンツを自分で追跡し、基準に違反している場合は最後の編集を元に戻す必要があると思います.

たとえば、制限を超えた場合、Twitter はユーザーがそれ以上文字を入力するのを止めないことに注意してください。制限を超えていることをユーザーに通知し、制限を下回ったときにそれを通知するだけです。一番使いやすいデザインかもしれません。

于 2013-09-16T13:57:44.607 に答える