Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Rails-多步骤形式的客户端验证问题_Javascript_Ruby On Rails_Validation_Ruby On Rails 4_Client Side Validation - Fatal编程技术网

Javascript Rails-多步骤形式的客户端验证问题

Javascript Rails-多步骤形式的客户端验证问题,javascript,ruby-on-rails,validation,ruby-on-rails-4,client-side-validation,Javascript,Ruby On Rails,Validation,Ruby On Rails 4,Client Side Validation,我在rails中有一个表单,它是一个多步骤表单 我用过这个宝石 “客户端验证”,github:“DavyJonesLocker/客户端验证”,分支:“4-2-stable” 表格是 <%= form_for @employee, :html => {:multipart => true, :id => 'msform'}, :validate => true do |f| %> <%= render 'shared/error_mes

我在rails中有一个表单,它是一个多步骤表单 我用过这个宝石
“客户端验证”,github:“DavyJonesLocker/客户端验证”,分支:“4-2-stable”

表格是

    <%= form_for @employee, :html => {:multipart => true, :id => 'msform'}, :validate => true do |f| %>
      <%= render 'shared/error_messages', :target => @employee %>
      <ul id='progressbar'>
        <li class='active'>Account</li>
        <li>Address</li>
        <li>Contact</li>
      </ul>
      <!-- fieldsets -->
      <fieldset>
        <h2 class='fs-title margin_0 bg_red white-text left-align margin_B20'>Create
          Account</h2>

        <div class='row form_row padding_L20 padding_R20 margin_B15'>
          <div class='col s12 m4 left-align'>
            <label for='usrname' class='form_label'>User Name</label>
          </div>
          <%= f.fields_for :profile do |p| %>
            <div class='col s12 m8'>
              <div class='input-field'>
                <%= p.text_field :name, :validate => true, :class => 'validate form_input' %>
              </div>
            </div>
          <% end %>
        </div>
        <div class='row form_row padding_L20 padding_R20 margin_B15'>
          <div class='col s12 m4 left-align'>
            <label class='form_label'>Email</label>
          </div>
          <div class='col s12 m8'>
            <div class='input-field'>
              <%= f.text_field :email, :validate => true, :class => 'validate form_input' %>
            </div>
          </div>
        </div>
        <div class='row form_row padding_L20 padding_R20 margin_B15'>
          <div class='col s12 m4 left-align'>
            <label class='form_label'>Role</label>
          </div>
          <div class='col s12 m8'>
            <div class='input-field'>
              <%= f.select :role, Employee.roles.keys, :selected => @employee[:role],
                           :class => 'browser-default' %>
            </div>
          </div>
        </div>

          <div class='row form_row padding_L20 padding_R20 margin_B15'>
            <%= f.fields_for :contact do |c| %>
              <div class='col s12 m4 left-align'>
                <label for='phno' class='form_label'>Phone Number</label>
              </div>
              <div class='col s12 m8'>
                <div class='input-field'>
                  <%= c.text_field :phone_no, :class => 'validate form_input' %>
                </div>
            <% end %>
            </div>
          </div>
          <input type='button' id="next_form" name='next' class='next action-button' value='Next'/>
        <% end %>

 </fieldset>
  <fieldset>
    <h2 class='fs-title margin_0 bg_red white-text left-align margin_B20'>Create
      Address</h2>

    <h3 class='fs-subtitle left-align margin_0'>Current Address</h3>
    <%= f.fields_for :contact, :validate => true do |c| %>
      <div class='row form_row padding_L20 padding_R20 margin_B15'>
        <div class='col s12 m4 left-align'>
          <label class='form_label'>Address 1</label>
        </div>
        <div class='col s12 m8'>
          <div class='input-field'>
            <%= c.text_field :current_address1, :class => 'validate form_input',
                             :id=> 'current-address-1', :validate => true %>
          </div>
        </div>
      </div>
      <div class='row form_row padding_L20 padding_R20 margin_B15'>
        <div class='col s12 m4 left-align'>
          <label class='form_label'>Address 2</label>
        </div>
        <div class='col s12 m8'>
          <div class='input-field'>
            <%= c.text_field :current_address2, :class => 'validate form_input',
                             :id=> 'current-address-2' %>
          </div>
        </div>
      </div>
      <div class='row form_row padding_L20 padding_R20 margin_B15'>
        <div class='col s12 m12 left-align'>
          <div class='row'>
            <div class='input-field col s12 m6'>
              <%= c.country_select :country, {prompt: 'Please select a country'}, {:class => 'browser-default'}, {:validate => true} %>
            </div>

            <div class='input-field col s12 m6'>
              <%= render partial: 'subregion_select', locals: {parent_region: c.object.country} %>
            </div>
          </div>
        </div>
      </div>

      <div class='row form_row padding_L20 padding_R20 margin_B15'>
        <div class='col s12 m12 left-align'>
          <div class='row'>
            <div class='input-field col s12 m6'>
              <%= c.text_field :city, :class => 'validate form_input', :placeholder =>'City',
                               :id=>'curr-city', :validate => true %>
            </div>
            <div class='input-field col s12 m6'>
              <%= c.text_field :zip, :class => 'validate form_input', :placeholder =>'Zip Code',
                               :id=>'curr-zip', :validate => true %>

            </div>
          </div>
        </div>
      </div>
    <% end %>
我在第一个表单中收到错误消息,但当我单击下一个表单,而另一个步骤表单出现在客户端时,验证不起作用
我无法解决这个问题,因为3天请帮助

验证程序可能正在调试,因为您正在按钮事件上使用“this”变量。尝试使用特定的表单选择器,如下所示:

var form = $('#msform');
var form_validators = ClientSideValidations.forms[form.attr('id')].validators
if (!form.isValid(form_validators)) {
  valid = false;
}
在显示表单后,还可以尝试重置验证程序:

if(valid){
  $("#msform").resetClientSideValidations();
  $("#msform").enableClientSideValidations();
}

你能详细说明一下“它不起作用”吗?你实际上观察到了什么?你希望看到什么?你有没有尝试过自己解决这个问题?你有没有尝试过从一个精简版的表单开始(比如说只有一个输入)并检查它是否有效。。。然后加入第二个输入等。。。看看这个非常简单的版本中,哪些有效,哪些无效?如果你能做到这一点,那么你可以一个接一个地添加输入,直到所有输入都能正常工作。是的,我尝试了一个输入,并启用了类似$(“#current-address-1”)的验证。enableClientSideValidations();但这不起作用…结果如何?你看到了什么?你期望看到什么?
if(valid){
  $("#msform").resetClientSideValidations();
  $("#msform").enableClientSideValidations();
}