Ненавязчивый jQuery и Rails с AJAX и проверкой формы - PullRequest
0 голосов
/ 12 марта 2010

Я ищу способ успешного вызова пользовательской функции из submitHandler, чтобы сделать правильный пост ajax.

Вот моя пользовательская функция:

jQuery.fn.submitWithAjax = function() {
this.submit(function() {
$.post(this.action, $(this).serialize(), null, "script");
return false;
})
return this;
};

Перед использованием плагина validate у меня было следующее, которое работало нормально:

$ (документ) .ready (function () { $ ( "# My_form") submitWithAjax (). }

Теперь я добавил часть проверки и не знаю, как вызвать пользовательская функция submitWithAjax ??

$(document).ready(function() {

$("#my_form").validate({

/*Validations - works perfectly!! */

},

submitHandler: function(form) {

/* $("#my_form").submitWithAjax(); - this works but
introduces recursion */

/* how to call custom subitWithAjax() ????? */

}

});
})

Спасибо!

Ответы [ 3 ]

0 голосов
/ 20 июня 2010

Надеюсь, вы нашли свой ответ, богумбикер. В итоге я добавил rails.js из библиотеки jquery-ujs:

http://github.com/rails/jquery-ujs/blob/master/src/rails.js

и вызов функции callRemote () вместо submitWithAjax () после проверки. Работал для меня в Rails 3.

0 голосов
/ 04 февраля 2011

У меня возникла та же проблема с использованием rails.js , поэтому я решил вызвать проверку в рамках обратного вызова ajax:beforeSend (описано здесь ). Вот обходной путь:

$('form').live('ajax:beforeSend', function(event, xhr, status){
  var form = $(this);
  form.validate({
    /* validation options go here */
  });
  if (!form.valid()) {
    return false;
  }
});
0 голосов
/ 12 марта 2010

Ваш пользовательский плагин добавляет только обработчик события отправки, который не будет работать с плагином валидатора. попробуйте это

$("#my_form").validate({
    /*Validations - works perfectly!! */
},
submitHandler: function(form){
    $.post(this.action, $(form).serialize(), null, "script");
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...