jquery验证插件不在rails中显示错误消息

Posted

技术标签:

【中文标题】jquery验证插件不在rails中显示错误消息【英文标题】:jquery validation plugin not displaying error message in rails 【发布时间】:2012-11-19 01:26:19 【问题描述】:

我正在尝试在 Rails 中进行 Jquery 客户端验证..

我的以下代码工作正常 http://jsfiddle.net/hr1383/5CFRB/1/

"正确显示错误信息"

现在我正在尝试做同样的事情。 由于我不确定将相应的 JS 和 CSS 放在哪里,所以我决定放入 application.html.erb 文件开始。

<html>
  <head>
    <title>Umvox</title>
      <%= stylesheet_link_tag    "application" %>
      <%= javascript_include_tag "application" %>
      <%= javascript_include_tag "jquery.validate" %>
      <%= javascript_include_tag "jquery.validate.min" %>
      <%= javascript_include_tag "jquery-1.7.2" %>
      <%=  javascript_include_tag  "http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"%>
       <%=  javascript_include_tag  "http://ajax.googleapis.com/ajax/libs/jqueryui/1.7.2/jquery-ui.min.js"%>
     <%= javascript_include_tag :defaults %>
     <%= csrf_meta_tags %>

      <script type="text/javascript">
         $(document).ready(function() 
       $("#company_form").validate(
            rules: 
                "company": required:true
             ,
             messages:
                company: "Enter Company name"
              
           );
         );​
       </script>
      <style type="text/css">
        #company_form background-color: aqua
        #company_form label  width: 250px; 
        #company_form label.error, #company_form input.submit  margin-left: 253px; 
    </style>
 </head>
 <body>
   <%= render "shared/dashboard_button_login" %>
   <%= yield %>
 </body>
</html>

而我的 _form.html.erb 部分包含

<%= form_tag("/locations/search" , :remote=> true, :id=>"company_form",        :name=>"company_form", :form_to_validate=>'location') do  %>
<table>
   <tr>
   <th>Company</th>
   <th>City</th>
   <th>Country</th>
   <th>ZipCode</th>
  </tr>
  <tr>
     <td><%= text_field_tag :company %></td>
     <td><%= text_field_tag :city %></td>
     <td><%= text_field_tag :country %></td>
     <td><%= text_field_tag :zipcode %></td>
      <td><%= submit_tag 'search'%></td>
  </tr>
</table>

下面的表格转换成html中显示的

http://jsfiddle.net/hr1383/5CFRB/1/

这似乎不起作用,并且总是在不显示错误消息的情况下进行服务器调用。

为什么会这样? 由于表单不属于某个模型对象所以我不知道在这里放js?

更新:我将 application.html.erb 更改为只包含两个所需的文件:

<html>
  <head>
    <title>Umvox</title>
      <%= stylesheet_link_tag    "application" %>
      <%= javascript_include_tag "application" %>
      <%= javascript_include_tag "jquery.validate" %>
      <%= javascript_include_tag "jquery-1.7.2" %>
       <%= csrf_meta_tags %>

      <script type="text/javascript">
         $(document).ready(function() 
       $("#company_form").validate(
            rules: 
                "company": required:true
             ,
             messages:
                company: "Enter Company name"
              
           );
         );​
       </script>
      <style type="text/css">
        #company_form background-color: aqua
        #company_form label  width: 250px; 
        #company_form label.error, #company_form input.submit  margin-left: 253px; 
    </style>
 </head>
 <body>
   <%= render "shared/dashboard_button_login" %>
   <%= yield %>
 </body>
</html>

谢谢 恶搞

【问题讨论】:

为什么加载文件多次且顺序错误? @Jani - 你的意思是 JS 文件?我不确定订单,是的将删除不需要的订单.. 您的 jsFiddle 选择的是 Mootools 而不是 jQuery,但随后您将 jQuery 作为外部资源加载。请阅读如何正确使用 jQuery 和 jQuery 插件。 【参考方案1】:

Ehrm,我不是 ruby​​ 方面的专家,但您似乎同时包括:jquery.validate 和 jquery.validate.min,以及两个不同版本的 jquery。那不是很好。但只是出于好奇,你为什么不在 jquery 之后弹出你的 jquery validate 呢?

【讨论】:

【参考方案2】:

我同意 povilasp,您不必同时包含 jquery.validate 和 jquery.validate.min 文件。 唯一的区别就是前者是debug版本,后者是compress版本。

此外,如果您的 rails 版本比较新,您不必显式包含 jquery,因为 jquery 始终是 rails 使用的 js 库。 (对不起,我不记得确切的版本)

【讨论】:

以上是关于jquery验证插件不在rails中显示错误消息的主要内容,如果未能解决你的问题,请参考以下文章

jQuery 验证插件:如何创建自己的消息

jQuery - 实时验证插件

错误消息“$.metadata”为空或不是对象。在 jQuery 中使用验证插件

如何在 Tooltipster 工具提示中显示来自 jQuery Validate 插件的消息?

用于跟踪验证错误的 Rails 插件

与 <from:form> 标签一起使用时,Jquery 验证插件不显示消息?