FormValidation jQuery插件不读取Rails安全表格名称



我正在使用formvalidation插件来验证我的轨道4表格。根据这个问题,我必须将我的字段"名称"从'name =" firstName"'到'name =" user [firstName]'''',以便表单可以正确提交。但是,FormValidation插件依赖于使用字段的"名称",而不是字段的" ID"来运行验证代码。如果字段的名称为" firstName",则可以使formvalidation工作,但如果名称为" user [firstName]),则不能。有没有办法在JavaScript(在此处newbie)中编写"名称"值?

这是我的形式。我尝试了

<%= form_for(resource, :as => resource_name,  id: 'new_user', :url => registration_path(resource_name)) do |f| %>
   <% if resource.errors.any? %>
<%= devise_error_messages! %>
<% end %>
<%=    f.text_field :firstname, :name=>'user[firstname]', :class => 'form-control', :autofocus => true, :required => true,  :placeholder => 'FIRST NAME' %> 
<%=    f.text_field :lastname, :name =>'user[lastname]', :class => 'form-control', :autofocus => true, :required => true,  :placeholder => 'LAST NAME ' %>         
 <%=    f.email_field :email, :name=>'user[email]', :class => 'form-control ', :autofocus => true, :required => true,  :placeholder => 'YOUR EMAIL', :style=>"width:100%" %>
  <%=    f.password_field :password, :class => 'form-control  ', :name=>'user[password]', :autofocus => true, :required => true,  :placeholder => 'YOUR PASSWORD' %> 
      <%=    f.password_field :password_confirmation,  :name=>'user[password_confirmation]', :class => 'form-control  ', :autofocus => true, :required => true,  :placeholder => 'CONFIRM YOUR PASSWORD' %>
 <%= f.submit 'Create Account',  :class => 'btn btn-aqua btn-lg btn-block', 
                                        :style => 'margin-bottom:5px' %>  

<%end%>

<script>
$(document).ready(function() {
    $('#new_user').formValidation({
        framework: 'bootstrap',
        icon: {
            valid: 'fa fa-check',
            invalid: 'fa fa-times',
            validating: 'fa fa-refresh'
        },
        fields: {
            user[firstname]: {
                validators: {
                    notEmpty: {
                        message: 'Please enter your first name'
                    }
                }
            },
             user[lastname]: {
                validators: {
                    notEmpty: {
                        message: 'Please enter your last name'
                    }
                }
            },

            user[email]: {
                validators: {
                    notEmpty: {
                        message: 'The email address is required'
                    },
                    emailAddress: {
                        message: 'The input is not a valid email address'
                    }
                }
            },
            user[password]: {
                validators: {
                    notEmpty: {
                        message: 'The password is required'
                    },
                }
            },
              user[password_confirmation]: {
                validators: {
                    notEmpty: {
                        message: 'Please confirm your password'
                    },
                    identical: {
                        field: 'user[password]',
                        message: 'The passwords do not match'
                    }
                }
            }
            button: {
    // The submit buttons selector
    selector: '[type="submit"]:not([formnovalidate])',
    // The disabled class
    disabled: 'disabled'
}
        }
    });
});
</script>

根据您的验证器插件的文档,

如果字段名称包含特殊字符,例如。,[,],则必须将其包裹在单引号或双引号之间。请参阅带有特殊名称示例的验证字段

所以只需将您的字段名称放在引号中,"

我的原始代码没有使用正确的格式来命名"名称" ...但是我无法调试,因为我也错过了一个随机逗号,就在"按钮"上方。我正在发布工作代码:

<script>
$(document).ready(function() {
    $('#new_user').formValidation({
        framework: 'bootstrap',
        icon: {
            valid: 'fa fa-check',
            invalid: 'fa fa-times',
            validating: 'fa fa-refresh'
        },
        fields: {
            'user[firstname]': {
                validators: {
                    notEmpty: {
                        message: 'Please enter your first name'
                    }
                }
            },
             'user[lastname]': {
                validators: {
                    notEmpty: {
                        message: 'Please enter your last name'
                    }
                }
            },

           'user[email]': {
                validators: {
                    notEmpty: {
                        message: 'The email address is required'
                    },
                    emailAddress: {
                        message: 'The input is not a valid email address'
                    }
                }
            },
            'user[password]': {
                validators: {
                    notEmpty: {
                        message: 'The password is required'
                    },
                }
            },
              'user[password_confirmation]': {
                validators: {
                    notEmpty: {
                        message: 'Please confirm your password'
                    },
                    identical: {
                        field: 'user[password]',
                        message: 'The passwords do not match'
                    }
                }
            },
            button: {
    // The submit buttons selector
    selector: '[type="submit"]:not([formnovalidate])',
    // The disabled class
    disabled: 'disabled'
}
        }
    });
});
</script>

最新更新