2012-11-30 41 views
1

我試圖得到一些手在軌jQuery的客戶端驗證錯誤消息..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> 

感謝 Harshit

+0

爲什麼你多次加載文件並按錯誤的順序? –

+0

@Jani - 你的意思是JS文件?我不確定訂單和yup是否會刪除那些不需要的。 – harshit

+0

您的jsFiddle選擇的是Mootools而不是jQuery,但是隨後您將jQuery加載爲外部資源。請閱讀如何正確使用jQuery和jQuery插件。 – Sparky

回答

2

Ehrm,我沒有太多的專家在Ruby,但看起來像你同時包括:jquery.validate和jquery.validate.min,以及兩個不同版本的jquery。這不是很好。但出於好奇,爲什麼不彈出你的jQuery驗證AFTER後?

1

我同意povilasp,你不必同時包括jquery.validate和jquery.validate.min文件。 它們之間唯一的區別是前者是調試版本,而後者是壓縮版本。

除了,如果你的rails版本很新,你不必顯式包含jquery,因爲jquery總是被rails使用的js庫。 (對不起,我不記得確切的版本)