2011-06-15 27 views
5

Estoy desarrollando una aplicación Ruby On Rails 2.3.8 y me gustaría saber cómo enviar un formulario remote_form_for cuando los usuarios presionen la tecla ENTRAR dentro del área de texto.¿Cómo enviar un formulario AJAX con la tecla ENTER, desde textarea?

Aquí es el código del formulario:

<% remote_form_for :post, PostComment.new, :url => save_outside_comment_path(post_id), :html => { :method => :put} do |f| %> 
    <%= f.text_area :comment, :rows => 1, :id => "txtOutsideComment_#{post_id}", :class => "new-reply-text" %> 
    <% end %> 

Aquí es la función de jQuery que hace un submit, pero no AJAX:

jQuery('.new-reply-text').keypress(function(e) { 
    if (e.keyCode == 13 && !e.shiftKey) { 
     e.preventDefault(); 
     this.form.submit(); 
    } 
}); 

hago ya la actualización de la página de mi controlador, puedo no desea especificar ninguna sintaxis como success: desde esta función jQuery. Solo quiero que envíe el remote_form_for usando AJAX.

Respuesta

6

Creo que está preguntando cómo hacer una solicitud de AJAX en lugar de enviar una página completa. Si es así

jQuery('.new-reply-text').keypress(function(e) { 
    if (e.keyCode == 13 && !e.shiftKey) { 
    e.preventDefault(); 
    jQuery.ajax({ 
     url: "/my/URL", 
     data: jQuery(this).form.serialize(), 
     success: function(){}, 
     dataType: "json" 
    }); 
    } 
}); 

Usted puede ahorrar unos cuantos parámetros si se utiliza .get http://api.jquery.com/jQuery.get/

o .post http://api.jquery.com/jQuery.post/

Cuáles son contenedores para .ajax http://api.jquery.com/jQuery.ajax/

estoy no es un tipo de rieles, por lo que deberás actualizar la clase/identificación del primer objeto jQuery para encontrar el remote_form_for

+0

Gracias por su respuesta. La cuestión de hacer esto es que ya estoy haciendo la sustitución html desde la acción del controlador, una vez que se envía el formulario. Por lo tanto, no quiero (o al menos nunca lo he hecho de esta manera) especificar un evento exitoso de jQuery, por ejemplo. ¿Hay alguna otra forma en Rails para hacer esto? – brianfalah

+1

simplemente deje la función de éxito vacía – jigfox

+0

La idea detrás de la llamada AJAX es procesar la solicitud de envío sin recargar toda la página. En este caso, activaría la misma acción de controlador que maneja el envío, pero en su lugar se llamaría mi función AJAX. A continuación, devolverá el HTML a través de la solicitud AJAX y en la función de éxito reemplazará dinámicamente el contenido del formulario (o área). – Brombomb

Cuestiones relacionadas