2010-05-21 6 views
2

Как подать подтверждение до remote_form_for отправляет?валидация перед отправкой формы ajax

У меня есть функция javascript под названием validateForm(). Я могу назвать это перед процессом запроса AJAX. Я попытался использовать return false и event.preventDefault. Но, похоже, никакого эффекта нет. Вот то, что мой код выглядит

<% remote_form_for :customer, :update =>"uxScreenLoaderDiv", :url => {:action => "login", :controller => "site"}, :onsubmit => "validateForm(event)" do |f| %> 
    User name : <%= f.text_field "uxUserName", :class => "TextBox", :style => "width:100px;" %>&nbsp;* 
    &nbsp;Password : <%= f.password_field "uxPassword", :class => "TextBox", :style => "width:100px;" %>&nbsp;* 
    <%= f.submit "Go!", :class => "Button-Simple", :id => "uxSubmitButton" %> 
<% end %> 

Код JavaScript функция проста следующим

function validateForm(event){ 
    return false; 
    //event.preventDefault(); 
} 

ответ

2

Попробуйте

<% remote_form_for :customer, :update =>"uxScreenLoaderDiv", :url => {:action => "login", :controller => "site"}, :html => {:id => "uxLoginForm"}, :onsubmit => "return validateForm(event)" do |f| %> 

т.е. изменить

:onsubmit => "validateForm(event) 

в

:onsubmit => "return validateForm(event) 

EDITED должно быть

<% remote_form_for :customer, :update =>"uxScreenLoaderDiv", 
     :url => {:action => "login", :controller => "site"}, 
     :html => {:id => "uxLoginForm", :onsubmit => "return validateForm(event)"} 
     do |f| 
%> 

EDITED AGAIN

ПОЧЕМУ вы не используете: условие для этого? что-то вроде следующего

<% remote_form_for :customer, :update =>"uxScreenLoaderDiv", 
     :url => {:action => "login", :controller => "site"}, 
     :html => {:id => "uxLoginForm"}, 
     :condition=>"validateForm(event)!=false" 
     do |f| 
%> 
+0

с использованием return validateForm (event) только делает его обычной формой и делает форму, ведущую с ajax-запросом – ZX12R

+0

, пожалуйста, проверьте мой «EDITED AGAIN» и сообщите мне, что произойдет. – Salil

1

Я думаю, что вы ищете что-то вроде onSubmit = «возвращение validateForm (это)» или около того , Затем, если проверка возвращает false (поскольку она не прошла проверку), форма не должна отправляться.

+0

я пробовал раньше .. у него есть проблема ... если возвращаемое значение истинно, форма подчиняется непосредственно и я s уже не является запросом AJAX – ZX12R

+0

Если вы просто пытаетесь выполнить чистый запрос AJAX, кнопка отправки не нужна. Вы можете просто использовать простой тип ввода «кнопка», например, и использовать обработчик onClick. – edl

1

Вы можете проверить LIvevalidation плагина (http://github.com/augustl/live-validations), которые вы можете сделать Ajax с активной записью валидациями

И его всегда хорошо иметь не АЯКС валидаций также (даже если вы использование Ajax валидация) как AJAX не будет работать в JavaScript отключить браузер

приветствий, Sameera

+0

спасибо. проверит его – ZX12R

+0

Хороший совет: я уже использую плагин jquery.validate для этого; но мне пришлось вручную скопировать мои проверки. – nathanvda

Смежные вопросы