0

ID #posttext のテキストエリアで値を取得し、関数を呼び出して何かを投稿する次の関数があります。

ユーザーが複数の改行続けて入力できるようにしたくありません。どうすればそれを防ぐことができますか?

コードは次のとおりです。

//Post something
$('#postDiv').on('keydown', '#posttext', function(e) {
if (e.which==13 && !e.shiftKey && $('#posttext').val()!=' Post something...') {

//This is what I tried to prevent a user from inserting more than one br in a row
var last = false;

var code = (e.keyCode ? e.keyCode : e.which);
if(code == 13) {
    if (last) { e.preventDefault(); }
    last=true;
}else{
    last=false;
}

//If not currently loading and enough text typed in, submit
if($('#imageFeedback').html()!=' | Loading...' && $('#posttext').val().length>15){

    //Say that it is loading
    $('#imageFeedback').css('color','black').css('font-weight','normal').html(' | Loading...');

    //Call function to post
    post($(this));
    return false;
}
}
});
4

1 に答える 1

0

たとえば、次の正規表現を使用して、後で重複する改行を単純に削除した方がはるかに優れています。s/\n{2,}/\n/g

ただし、必要なことを行うには、キーアップで重複する改行を削除するだけです

$('#postDiv').on('keyup', '#posttext', function(e) {
    var val = $(this).val(),
        newval = val.replace(/\n{2,}/g, '\n');
    if(val != newval) {
        $(this).val(newval);
    }
});

デモ: http://jsfiddle.net/ThiefMaster/WJmhF/

于 2012-05-08T09:50:26.607 に答える