【问题标题】:Rails validate form_for before submittingRails 在提交之前验证 form_for
【发布时间】:2014-09-05 00:50:13
【问题描述】:

我正在尝试验证我的 form_for 在提交之前是否已完成所有必要的字段,并且已经完成了 95%,但它在检查并发出警报之前仍会提交。

这是表格的开头:

<%= 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 字段在提交到后端之前未填写时会引发警报?与布尔值有关,但我不是这里的专家。

【问题讨论】:

  • 您为什么要遵循这些避免 Rails 进行验证并使用 jQuery 的路线?使用给定的信息很难调试问题。您的脚本块中的judge 是什么?脚本块放在哪里?等

标签: javascript jquery ruby-on-rails forms


【解决方案1】:

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

【讨论】:

  • 是的,但我正在寻求如何为此编写代码的帮助。
  • 所以,你会希望你的 javascript 是这样的:if(document.getElementById('name_input').text()=="") { return false; } else { return true; },你可以在返回之前发出任何你想要的警报。
【解决方案2】:

这是一个盲目的猜测,但这有机会工作:

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

【讨论】:

    猜你喜欢
    • 2018-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-01
    相关资源
    最近更新 更多