Проверка подлинности jquery игнорируется в IE - при использовании rails драйвер ujs ​​+ проверка jquery + форма ajax - PullRequest
1 голос
/ 07 марта 2011

мне не ясно, связана ли проблема с драйвером ujs или плагином jquery-validate ...

при использовании драйвера jquery UJS (самый последний, от github) + плагин jquery-validate (самый последнийот github) + форма ajax (через тег data-remote), правила проверки игнорируются.только в IE 8 chrome и FF работают нормально

, протестировано с jquery 1.4.4 и jquery 1.5.1, с использованием самой последней проверки jquery от github.

вот простой пример: http://avioing.com/validate/example.html и http://avioing.com/validate/example_no_ujs.html

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

единственное различие между этими двумя файлами состоит в том, что я удалил тег «data-remote» из формы в последнем файле, и теперь проверка запускается.

Ответы [ 2 ]

1 голос
/ 11 марта 2011

Я опубликовал это как проблему в jquery-ujs / github, и с помощью команды jquery-ujs мы выявили проблему, которая включает IE <9, jquery и jquery-ujs, и способ отправки всплывающих событий -в IE и других браузерах. </p>

команда jquery-ujs разработала обходной путь (см. обсуждение здесь https://github.com/rails/jquery-ujs/pull/123),, но на момент написания этой статьи исправление еще не было внесено в jquery-дерево ujs. Проблема заключается в том, должна ли проблема быть исправлена ​​в jquery или jquery-ujs.

. Тем временем я считаю, что вы можете вручную исправить ваш rails.js, чтобы обойти эту проблему, основываясь на запросе pull.на github.

0 голосов
/ 06 марта 2013

Решение было опубликовано teohm на http://teohm.github.com/blog/2011/05/25/using-jquery-validation-in-rails-remote-form/

$('#submit_form').validate({

  submitHandler: function(form) {
    // .. do something before submit ..
    $.rails.handleRemote( $(form) );  // submit via xhr
    //form.submit();                  // don't use, it submits the form directly
  }

});

Надеюсь, это поможет

...