2014-07-14 88 views
2

我试图验证所有必要的字段在我提交之前已经在form_for中完成了,并且在那里有95%,但它仍然在提交之前检查并抛出警报。Rails在提交之前验证form_for

这里是形式的开头:

<%= form_for Product.new, :options => {:id => "new_listing", :onSubmit => "validateForm()"}, :url => {:action => "create"}, :html => {:multipart => true}, :builder => Judge::FormBuilder do |f| %> 

而这里的JavaScript的:

<script> 
    validateForm = function(){ 
    judge.validate(document.getElementById('name_input'), { 
     valid: function(element) { 
      element.style.border = '1px solid green'; 
     }, 
     invalid: function(element, messages) { 
      element.style.border = '1px solid red'; 
      alert(messages.join(',')); 
     } 
     }); 
    }; 

</script> 

什么我现在需要做的,以确保警报被抛出时,name_input场不是招在提交到后端之前没有填写完整内容吗?与布尔值有关,但我不是这里的专家。

+0

你为什么以下避免Rails的做了验证,并使用jQuery的这些路线?利用给定的信息很难调试问题。什么是脚本块中的“判断”?脚本块放置在哪里?等等。 – vee

回答

0

当验证无效时,您可以尝试返回false。当您使用一个onSubmit JavaScript函数时,它将继续执行下一步操作,除非js返回false。

+0

是的,但我正在寻求* how *的帮助来编写代码。 –

+0

所以,你会希望你的JavaScript是这样的:'if(document.getElementById('name_input')。text()==“”){return false; } else {return true; ''并且你可以在退货之前提出你想要的任何提醒。 – PatoBeltran

0

它在这里瞎猜测,但这个有机会工作:

judge.validate(document.getElementById('name_input'), { 
    ..., 
    invalid: function(element, messages) { 
     ... 
     return false; 
    } 
}); 
+0

可悲的是我试过这个,它不起作用 –