2012-05-08 39 views
0

我有以下函數來獲取id爲#posttext的textarea中的值,並調用函數來發布內容。Textarea - 防止用戶插入多個換行符

我不希望用戶能夠連續輸入一個以上的換行符。我怎樣才能防止呢?

下面的代碼:

//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; 
} 
} 
}); 

回答

0

這將是好得多,如果你只是刪除重複的換行符後,如與此正則表達式:s/\n{2,}/\n/g

但是,做你想做的,只是刪除重複的換行符的onkeyup

$('#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/

+0

謝謝你 - 但是,我需要檢查它打字時不晚。 – weltschmerz

+0

是的,看到我在我的建議下面發佈的JavaScript。 – ThiefMaster

+0

不完全 - 只有大約一個以上的換行符。只要不超過一行,整個textarea就可以有多個換行符。 – weltschmerz