2011-02-10 15 views
10

utilizzando jQuery come posso non permettere nuove linee da inserire (premendo enter o la copia in testo) - Nel codice semi-pseudo ...Non consentire nuove linee in textarea

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

Grazie!

EDIT:

sarebbe come grezzo come la seguente o c'è un modo migliore?

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

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

quando digitazione dell'utente o quando si imposta il contenuto della textarea – Fatih

+0

quando l'utente sta scrivendo – kieran

+0

Con tutte le sotto le soluzioni, posso ancora aprire gli strumenti per sviluppatori di Chrome e modificare manualmente i contenuti del campo. O disabilitare javascript. :) –

risposta

17

Ci sono due metodi per farlo: controllare ogni carattere come è input e restituire false se non vuoi che si visualizzi, o su ogni cambiamento/keyup puoi controllare l'intero contenuto. Mentre il primo è più performante, non funzionerà in situazioni in cui l'utente incolla il contenuto che include caratteri indesiderati. Per questo motivo, vi consiglio il secondo approccio, qualcosa di simile (che non consentire tutti gli spazi verticali):

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

Che cos'è gsub? Sta dicendo che non è una funzione riconosciuta – kieran

+0

Un metodo Ruby ... hahaha. Ops. Scambiato in 'replace()', che è l'equivalente di JavaScript. – coreyward

+0

Qualche idea su come sostituire varie nuove linee con una sola? Ho provato questo approccio, non ha funzionato: $ ('# text'). Val ($ ('# text'). Val(). Replace (/ \ v +/g, "\ n")); – andufo

5

è possibile controllare keyCode, se è pari al 13 semplicemente restituire false

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

non risolve l'incollatura dell'utente nel contenuto – kieran

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

funziona bene. Sembra un po 'esagerato? – kieran

Problemi correlati