2012-01-19 18 views
21

Tengo un chat que usa textarea en lugar de texto por razones obvias. Esta es la razón por la que cada vez que los miembros presionan ENTER, obtienen una nueva línea en lugar de enviar el mensaje. Me gustaría cambiar esto, así que cada vez que presionen ENTER = el mensaje que se enviará y luego el cursor para regresar al área de texto para su siguiente mensaje de mecanografía. He intentado diferentes códigos encontrados en este sitio, la mayoría no funcionó y los que parecían hacer algo simplemente refrescaban la página y obtuve una página en blanco.Cómo hacer que la tecla "Enter" en un área de texto envíe un formulario

Mi código:

<form name="message" action=""> 
    <textarea name="usermsg" autocomplete="off" type="text" id="usermsg" rows="4" cols="30" style="width: 450px; margin-left: 25px;"> 
    </textarea> 
    <br/> 

    <p style="margin-left: 420px;"><input name="submitmsg" type="submit" id="submitmsg" value="Send" /></p> 
</form> 

Muchas gracias por su tiempo.

+1

idioma Que la programación estás hablando? HTML? – gorootde

+0

PHP es el lenguaje de programación. Idioma – Ingrid

+1

programación debería ser irrelevante aquí ya que esta es una solicitud del lado del cliente. –

Respuesta

15

que han creado una jsFiddle con un ejemplo de cómo hacerlo con jQuery y la función keypress y which propiedad: http://jsfiddle.net/GcdUE/

No

seguro exactamente lo que están pidiendo por más que esto, así que por favor especifique su pregunta más si es posible.

$(function() { 
    $("#usermsg").keypress(function (e) { 
     if(e.which == 13) { 
      //submit form via ajax, this is not JS but server side scripting so not showing here 
      $("#chatbox").append($(this).val() + "<br/>"); 
      $(this).val(""); 
      e.preventDefault(); 
     } 
    }); 
}); 
+0

Anders, esto funciona pero el mensaje solo permanece por un segundo y luego desaparece del chat. – Ingrid

+0

Ok, he editado algo que se ajusta a mi chat y su código funciona perfectamente ahora, gracias a todos, ¡has sido muy amable! – Ingrid

+0

Me alegro de poder ayudar. :) –

5

Bueno, suponiendo que estaba usando jQuery sería un simple oyente en su campo de entrada:

En el pie de página antes de </cuerpo >:

<script type="text/javascript"> 
$(document).ready(function(){ 
    $('#usermsg').keypress(function(e){ 
     if(e.which == 13){ 
      // submit via ajax or 
      $('form').submit(); 
     } 
    }); 
}); 
</script> 

En la cabeza html añadir lo siguiente:

<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1/jquery-ui.min.js" type="text/javascript" charset="utf-8"></script> 

pero si js o jquery están descartados, entonces quizás actualice su pregunta para excluirla específicamente.

+0

Lo probé pero parece que no funciona o simplemente no sé cómo hacerlo bien. ¿Necesito cambiar algo del código? ty – Ingrid

+0

Actualicé mi respuesta. Lo siento, olvidé agregar tu identificación al área de texto. –

+0

Ok, ahora tenía una respuesta, parece que lo inserté correctamente, pero me aparece una página en blanco como actualizar. – Ingrid

-2

Uso <input type=text> en lugar de <textarea>. Entonces tienes muchas mejores oportunidades. En textarea, presionar Enter se supone que significa un salto de línea en el texto, no el envío de texto.

+0

Sí, lo sé, solía ser texto, pero es un problema para un chat donde se realizan publicaciones más largas (como en este cuadro de comentarios) tener una sola línea. Gracias por tomarte el tiempo para responder. – Ingrid

19

Prueba esto (tenga en cuenta que cuando se pulsa ENTER ir presentara, pero Mayús + Entrar ir nueva línea.

$("#textareaId").keypress(function (e) { 
    if(e.which == 13 && !e.shiftKey) {   
     $(this).closest("form").submit(); 
     e.preventDefault(); 
     return false; 
    } 
}); 
+0

eres un dios gracias! –

Cuestiones relacionadas