【问题标题】:Conditional Validation of Form Fields w/ JQuery Form Validator Rails Gem使用 JQuery 表单验证器 Rails Gem 对表单字段进行条件验证
【发布时间】:2016-07-16 01:06:12
【问题描述】:

我正在开发一个使用 jquery-form-validator-rails gem 进行表单字段验证的 group rails 应用程序。我可以使用字段上的数据对象执行简单的验证,如下所示:

<%= f.text_field(:name , class: "form-control", data: { :validation => "required validate_max_length length255", "validation-error-msg" => "Required Field, 255 characters max"}) %>

但是,我不知道如何添加条件验证规则。只有在另一个字段中包含某个值时才需要特定字段(ex:#other_component_id仅在SELECT字段,#component_id包含“其他”作为值时)。

我尝试在 $.validate() 调用中添加规则,但它们似乎不适用。

$().validate({
      rules: {
        other_component_id: {
          required: function(element) {
            return $('#component_id').val().includes('other');
          }
        }
      }
    });

对特定表单应用 validate() 方法也不起作用。

因为这个应用程序是共享的,所以我必须使用 jquery-form-validator-rails gem 来进行表单验证。

【问题讨论】:

    标签: jquery ruby-on-rails validation


    【解决方案1】:

    没关系。事实证明,我使用了不正确的格式来应用验证(尽管“必需”验证有效,但最大长度无效)。我将其更改为使用这种格式:

    <%= f.text_field(:name , class: "form-control", data: { :validation => 'length', 'validation-length' => '1-255',
                                                                                    'validation-error-msg' => 'Required Field, 255 characters max'}) %>
    

    然后我可以添加一个自定义验证器并将其应用于我的字段。

    JS:

    $.formUtils.addValidator({
      name : 'comp_required',
      validatorFunction : function(value, $el, config, language, $form) {
        if ($('#component_id').val().includes('other')) {
          if (value.length > 0 && value.length <= 32) {
            return true;
          }
        } else {
          return true;
        }
      },
      errorMessage : 'You must enter a new component name. Max length = 32',
      errorMessageKey: 'badComponentName'
    });
    

    如果有人对更有效的条件验证方法有建议,我很想听听。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多