2011-02-10 11 views
10

Usando jQuery cómo no voy a permitir que se inserten nuevas líneas (pulsar enter o se copia en el texto) - En el código semi-seudo ...No permita que las nuevas líneas de área de texto

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

Gracias!

EDIT:

¿Sería tan crudo como el que sigue, o hay una manera mejor?

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

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

al usuario escribir o cuando se ajusta el contenido al área de texto – Fatih

+0

cuando el usuario está escribiendo – kieran

+0

Con toda la debajo de las soluciones, aún puedo abrir las herramientas para desarrolladores de Chrome y editar manualmente los contenidos del campo. O deshabilita javascript. :) –

Respuesta

17

Hay dos métodos para hacer esto: comprobar cada personaje, ya que es de entrada y de retorno falso si no desea que se muestre, o en cada cambio/teclado puede verificar todo el contenido. Mientras que el primero es más eficiente, no funcionará en situaciones en las que el usuario pegue contenido que incluya caracteres no deseados. Por esa razón, recomiendo el último enfoque, algo como esto (que no permitir que todos los espacios en blanco vertical):

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

¿Qué es gsub? Está diciendo que no es una función reconocida – kieran

+0

Un método Ruby ... jajaja. Whoops. Intercambiado en 'replace()', que es el equivalente de JavaScript. – coreyward

+0

¿Alguna idea sobre cómo reemplazar varias líneas nuevas con solo una? Intenté este enfoque, no funcionó: $ ('# text'). Val ($ ('# text'). Val(). Replace (/ \ v +/g, "\ n")); – andufo

5

puede comprobar keyCode, si es igual a 13 devuelva falso

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

no resuelve pegar usuario en contenido – kieran

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

funciona bien. Parece un poco exagerado sin embargo? – kieran

Cuestiones relacionadas