2013-10-25 64 views
0

我想檢測文本區域中的新空行,並且用戶是否按下了輸入文本區域,而不輸入任何數據以返回false並回顯消息。我做了一些研究和想到這樣的事情:如何使用Javascript在textarea中檢測新的空行?

var validatef .... 
var code = (e.keyCode ? e.keyCode : e.which); 
if (validatef == 'a value here' || code == 13) { 
    somevarhere.textcontent = 'Message'; 
    return false; 
} 
else {....} 

但它似乎並沒有工作。

+0

你的意思是「不起作用」? – bksi

+0

@bksi我的意思是當用戶點擊輸入而不輸入任何數據時,它什麼也不做。 – Adrian

+0

新的空行和按下的輸入?怎麼樣才能檢測到兩個連續按下的輸入? – Arantir

回答

1

試試這個

$('textarea').on('keypress', function(e) { 
    var val = $('textarea').val(); 
    if (e.which == 13) { 
if(! /\S/.test(val)) { 
    alert("no data"); 
} 
    } 
}); 

此提醒每個按鍵的數據。

這是jQuery的,但是這將是類似的,即使在普通的JavaScript

這裏是演示http://jsfiddle.net/TUCx8/

+0

如果它是JavaScript的不會很好; t知道$('textarea')。on('keypress',function(e)轉換爲javascript – Adrian

2

您可以通過檢查值檢測一個textarea一個空行:

\r\n(正常工作對我來說)或\n

只是\r\n\n最擅長的,你適合替換的文字a value here

編輯:

檢查How to count string occurrence in string?計算正則表達式出場。因此,您可以通過for循環在/\s/g上顯示錯誤消息。

希望它有幫助。

+1

\ r \ n? \ n現在不是嗎? – bjb568

+0

那麼,\ r \ n在最新的瀏覽器中對我來說就像一個魅力:) – diosney

+0

Dude是對的,它只適用於\ n。但問題是,我希望它顯示錯誤foreach空間或100空間。它適用於第一次輸入,之後並沒有 – Adrian

1

只是測試,如果按用戶輸入兩次

/\n\n/.test(this.value) 
1

根據問題的第一句話,這可能是可能的解決方案一個:

var enters = 0; 
$('textarea').keypress(function(event) { 
    if (event.which == 13) 
     enters++; 
    else 
     enters = 0; 
    if (enters > 1) { 
     alert('You hit 2 new lines!'); 
    } 
}); 

活生生的例子http://jsfiddle.net/fp6xk/

0

另一種解決方案是正確的文本年底前要檢查一個空行:

(function(){ 
    $('textarea').keyup(function(event) { 
     if (/(\r?\n){2}$/.test($(this).val())) { 
      alert('2 consecutive empty lines at the end!'); 
     } 
    }); 
})(); 

它的工作獨立連續進入印刷機。 http://jsfiddle.net/fp6xk/4/

相關問題