在ajax表单提交之前进行验证

时间:2010-05-21 07:14:21

标签: javascript jquery ruby-on-rails ajax

如何在 remote_form_for 提交之前引入验证?

我有一个名为 validateForm()的javascript函数。我可以在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();
}

3 个答案:

答案 0 :(得分: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)

编辑它应该是

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

再次编辑

你为什么不使用:条件呢?类似于以下内容

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

答案 1 :(得分:1)

我认为你正在寻找的东西就像是onSubmit =“return validateForm(this)”或者左右。然后,如果验证返回false(因为验证失败),表单不应该提交。

答案 2 :(得分:1)

您可能需要检查LIvevalidation插件(http://github.com/augustl/live-validations),您可以使用活动记录验证来执行Ajax

并且总是很好的非ajax验证(即使你使用ajax验证)因为ajax将无法在javascript禁用浏览器中工作

欢呼声, sameera