2011-02-10 6 views
10

jQuery jak mogę nie pozwalają nowe linie do wstawienia (wciskając enter lub kopiowanie w tekście) - W kodzie semi-pseudo ...Nie dopuszczać nowych wierszy w textarea

$('textarea').keydown(function(){ 
$(this).remove_new_lines(); 
}); 

Dzięki!

EDIT:

byłoby jako surowego jako następujące czy jest jakiś lepszy sposób?

function removeNL(s){ 
    return s.replace(/[\n\r\t]/g,); 
} 

$('textarea').keydown(function(){ 
$(this).val(removeNL($(this).val)); 
}); 
+0

podczas wpisywania użytkownika lub przy ustalaniu treści textarea – Fatih

+0

gdy użytkownik pisze – kieran

+0

ze wszystkimi poniżej rozwiązania, wciąż mogę otworzyć narzędzia dla programistów Chrome i ręcznie edytować zawartość pola. Lub wyłącz javascript. :) –

Odpowiedz

17

Istnieją dwa sposoby, aby to zrobić: Sprawdź każdą postacią, ponieważ jest to wejście i return false jeśli nie chcesz, aby się pojawił, lub przy każdej zmianie/keyup możesz sprawdzić całą zawartość. Podczas gdy pierwsza jest bardziej wydajna, nie będzie działać w sytuacjach, w których użytkownik wkleja treści, w tym niechciane znaki. Z tego powodu, polecam to drugie podejście, coś takiego (co uniemożliwi wszelkie pionowe spacje):

$('textarea').on('keyup', function(){ 
    $(this).val($(this).val().replace(/[\r\n\v]+/g, '')); 
}); 
+0

Co to jest gsub? Mówi się, że nie jest to uznana funkcja. – kieran

+0

Metoda Rubiego ... hahaha. Whoops. Zamieniony w 'replace()', który jest odpowiednikiem JavaScript. – coreyward

+0

Jakieś pomysły na zastąpienie różnych nowych linii tylko jednym? Próbowałem tego podejścia, nie działa: $ ("# tekst"). Val ($ ("# tekst"). Val(). Replace (/ \ v +/g, "\ n")); – andufo

5

można sprawdzić keyCode, jeśli jest ona równa 13 po prostu return false

 
$('#TEXTAREA').keypress(function(e){ 
    if (e.keyCode == 13) return false 
}) 
+3

nie rozwiązuje problemu z wklejeniem użytkownika w treści – kieran

1
$('textarea').keydown(function(e){ 
var s = $('textarea').val(); 
while (s.indexOf("\n") > -1) 
    s = s.replace("\n",""); 
$('textarea').val(s); 
}); 
+0

działa dobrze. Wydaje się jednak nieco przesadzone? – kieran