2011-05-19 30 views
7

¿Cómo bloqueo el ingreso de retorno de carro, nueva línea, comillas simples y comillas dobles en un área de texto utilizando asp.net mvc, durante el evento de pulsación de tecla?¿Cómo bloquear el ingreso de retorno de carro en textarea?

+0

Vas a obtener mucha más ayuda si A) escribe en oraciones completas, y B) muestra que has tratado de resolver tu problema. http://www.google.com/search?q=javascript+prevent+certain+characters+from+being+enred –

+1

@Nick ODell - Eso no es cierto Nick. A) No todo el mundo tiene un dominio completo del idioma inglés, su pregunta fue fácil de entender para @Tim para editar. B) Ninguna pregunta es demasiado trivial. – jfar

+0

Este sitio web contiene una lista de todos los códigos clave que cualquiera podría necesitar: http://www.expandinghead.net/keycode.html –

Respuesta

27

Se podría usar jQuery y suscribirse para la .keypress() caso del área de texto:

$('textarea').keypress(function(event) { 
    // Check the keyCode and if the user pressed Enter (code = 13) 
    // disable it 
    if (event.keyCode == 13) { 
     event.preventDefault(); 
    } 
}); 
+4

FWIW: si no desea utilizar el evento 'keypress', puede suprimir la tecla enter efectos mediante el uso de '.preventDefault()' durante el evento 'keydown'. para cuando toca el evento 'keyup', el retorno de carro ya ha sido ingresado. – Jason

+6

Realmente no veo por qué esta es la solución definitiva. ¿Qué pasa si pegas? La solución definitiva es ejecutar esta función cuando envía el formulario para que se compruebe una vez, no cada vez que escribe en él. Esto simplemente parece un desperdicio. –

+0

@TheMuffinMan puede adaptar la solución de Darin Dimitrov escuchando múltiples eventos; en el caso de su objeción, se activa el evento de "cambio" y puede verificar el texto pegado o arrastrado dentro de él para encontrar retornos de carro. –

2

para estar cómodo con la modificación del texto causada por arrastre de usuario y soltar de otro texto/elementos dentro del área de texto o mediante pegando texto dentro de él, también es necesario escucharlo en el evento change.

Por otra parte, sugiero utilizar el método .on(), disponible desde jQuery 1.7, y para detectar la tecla enter pulsado por el usuario a través de la propiedad event.which del objeto de evento, para tener un sólido comportamiento multi-navegador de su aplicación:

var $textarea = $('#comment'); 
// events to bind: 
$textarea.on('keydown keyup change focus blur', function(e) { 
    if (e.type === 'change') { 
     // this event is triggered when the text is changed through drag and drop too, 
     // or by pasting something inside the textarea; 
     // remove carriage returns (\r) and newlines (\n): 
     $textarea.val($textarea.val().replace(/\r?\n/g, '')); 
    } 
    if (e.which === 13) { 
     // the enter key has been pressed, avoid producing a carriage return from it: 
     e.preventDefault(); 
    } 
}); 
Cuestiones relacionadas