Rails JQuery 在模态内验证而不是触发

Rails JQuery Validate within Modal not Firing

我已经成功地让 JQuery 表单验证在页面的常规正文中正常工作,但是,当我尝试在模式框中进行验证时,JQuery 没有开火。

模态部分:

<div class="modal" id="myModal">
    <div class="modal-dialog">
      <div class="modal-content">
        <div class="modal-header">
          <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
          <h4 class="modal-title">New Account</h4>
        </div>
        <div class="modal-body" id = "addClientForm">
          <%= simple_form_for @client, :remote => true, :html => { :id => "addClientForm"} do |f| %>
            <div>    
              <div class="col-lg-6 col-md-6 col-sm-6 col-xs-12">
                <%= f.input :company_name %>
              </div>  
               <%= f.button :submit %>
            </div>
            <div class="clearfix">
            </div>
          <% end %>
        </div>
      </div>
    </div>                      
  </div>

脚本: 当我将表单放在模式之外时,我使用 $(document).ready( function () { 而不是 $("#myModal").on("shown.bs.modal", function () {。然而,文件。 ready 在模态内对表单不起作用。

 <script>
      $("#myModal").on("shown.bs.modal", function () {
        $("#addClientForm").validate({
          rules: {
            "client[company_name]": {
              required: true
            }
          },
          messages: {
            "client[company_name]": {
              required: "Company Name is a required field."
            }
          }
      });
    } );
</script>

型号:

class Client < ActiveRecord::Base
  validates :company_name, presence: true

  has_many :quotes
  has_many :current_plans 
end

终端输出: 当 JQuery 正确触发时,我在终端中没有收到任何反馈,并且验证显示。当 JQuery 没有触发时,我得到: 在 2015-08-19 18:16:54 +0000 开始 POST 66.186.164.130 的“/clients” 由 ClientsController 处理#create as JS

  Parameters: {"utf8"=>"✓", "client"=>{"company_name"=>""}, "commit"=>"Create Client"}
   (30.5ms)  BEGIN
   (30.5ms)  ROLLBACK
   (30.8ms)  SELECT COUNT(*) FROM "clients"
   (30.6ms)  SELECT COUNT(*) FROM "quotes"
  Rendered clients/_client_table.html.erb (0.1ms)
  Rendered clients/_newClientModal.html.erb (15.3ms)
  Rendered clients/home.html.erb (82.0ms)
Completed 200 OK in 152ms (Views: 25.2ms | ActiveRecord: 122.4ms)

application.js:

//= require jquery
//= require jquery.turbolinks
//= require jquery_ujs
//= require jquery-ui/datepicker
//= require best_in_place
//= require best_in_place.jquery-ui
//= require moment
//= require bootstrap-datetimepicker
//= require pickers
//= require jquery.validate
//= require jquery.validate.additional-methods
//= require dataTables/jquery.dataTables
//= require dataTables/bootstrap/3/jquery.dataTables.bootstrap
//= require dataTables/jquery.dataTables
//= require dataTables/extras/dataTables.tableTools
//= require twitter/bootstrap
//= require turbolinks
//= require bootstrap3-editable/bootstrap-editable
//= require_tree .

如果您需要任何进一步的信息,请告诉我。谢谢!

尝试更改资产的顺序,使 turbolinks 成为文件中的最后一项:

//= require jquery
//= require jquery.turbolinks
//= require jquery_ujs
//= require jquery-ui/datepicker
//= require best_in_place
//= require best_in_place.jquery-ui
//= require moment
//= require bootstrap-datetimepicker
//= require pickers
//= require jquery.validate
//= require jquery.validate.additional-methods
//= require dataTables/jquery.dataTables
//= require dataTables/bootstrap/3/jquery.dataTables.bootstrap
//= require dataTables/jquery.dataTables
//= require dataTables/extras/dataTables.tableTools
//= require twitter/bootstrap
//= require bootstrap3-editable/bootstrap-editable
//= require_tree .
//= require turbolinks

我知道你说你没有使用 torbolinks,但我的 select2 和 fuelux 向导的 JS 代码有问题(显然与 turbolinks 无关),并且进行此更改解决了它。

经过大量的反复试验 - 我从模态主体 div 中删除了 id = addClientForm,并且 JQuery 验证有效。不知道为什么它首先在那里,但它引起了很多头痛。