2011-09-08 161 views
7

Quiero tener un cuadro de chat (textarea) donde si el usuario presiona Enter entonces debe enviar el chat, y si el usuario presiona Shift + Enter entonces debe ingresar en una nueva línea.Enviar valor al presionar Enter en textarea y presionar Shift + Enter debe ir a la siguiente línea

Intenté algo pero no pude descifrar la clave exacta o la clave. El código que estoy usando en este momento es:

$("textarea").keydown(function(e){ 
    if (e.keyCode == 13 && !e.shiftKey) 
    { 
     e.preventDefault(); 
    } 
}); 

jsFiddle

También quiero conseguir el \n en su lugar cuando se pulsa ENTER + tecla de mayúsculas.

EDITAR

problema con mi código es: -

Cuando estoy revisar el contenido de cliente mediante el uso de alerta se muestra a continuación, la siguiente línea. Pero cuando lo publico, mis raíles están en la parte de atrás. Entonces es solo una cadena simple. No hay nada nuevo de línea ahí.

Así es como estoy enviando chats al servidor de rieles.

$.post("/incomingchat", { body:$("#chat_" + group_id).val() }, 
    function(data){ 
     // do something.. 
    }); 
+6

No haga ** solo ** enlace a jsfiddle; siempre incluya el código en la pregunta también. – Matt

+1

¿Qué pasa con el código que publicaste? Para mí, ¿funciona como lo describiste? http://jsfiddle.net/Su5ts/25/ – ChrisR

+1

@Matt Lo sentimos, tendremos esto en cuenta. –

Respuesta

2

He respondido esto antes. Es un poco complicado si el cursor no está al final del área de texto:

How do I detect "shift+enter" and generate a new line in Textarea?

+0

El problema es cuando estoy publicando estos datos usando Jquery en mi servidor back-end. ¿Cómo puedo identificar la tecla enter + shift? en el fondo es lo mismo que sin introducir la tecla + shift –

+0

@Mohit: No entiendo. El valor de textarea después de presionar shift + enter contendrá un salto de línea y este salto de línea definitivamente se enviará al servidor cuando publique. –

+0

@TimDown: Tengo una pregunta relacionada. En Chrome, si manejo un evento de pulsación de tecla cuando presiono la tecla enter agregando un nuevo carácter de línea '\ n', y si el área de texto es desplazable, la barra de desplazamiento no funcionará, quiero decir que si presiono la tecla enter, textarea no se desplaza cuando escribo ¿Tienes alguna idea para este problema? –

3
$("textarea").keydown(function(e) 
{ 
    if (e.keyCode == 13) 
    { 
     if (e.shiftKey) { 
      $(this).val($(this).val() + "\n"); 
     } 
     else { 
      submitTheChat(); 
     } 
    } 
}); 
+0

El problema es cuando estoy publicando estos datos usando Jquery en mi servidor back-end. ¿Cómo puedo identificar la tecla enter + shift? en back end es lo mismo que sin enter + shift key –

1

considerar el uso del evento de pulsación de tecla en su lugar. Si ejecuta el código en jsfiddle, verá que no se agrega una nueva línea cuando presiona enter.

$("textarea").keypress(function(e){ 
    if (e.keyCode == 13 && !e.shiftKey) 
    {   
     e.preventDefault(); 
     //now call the code to submit your form 
     alert("just enter was pressed"); 
     return; 
    } 

    if (e.keyCode == 13 && e.shiftKey) 
    {  
     //this is the shift+enter right now it does go to a new line 
     alert("shift+enter was pressed");   
    }  
}); 
+0

El problema es cuando estoy publicando estos datos usando Jquery en mi servidor back-end. ¿Cómo puedo identificar la tecla enter + shift? en la parte de atrás es lo mismo que sin introducir la tecla + shift –

+0

Ok, ya veo. En ese caso, sugiero ver la respuesta de Tim Down que publicó anteriormente. – pedrodg

Cuestiones relacionadas