2016-03-28 11 views
0

フォームフィールドの検証にjquery-form-validator-rails gemを使用するグループレールアプリで作業しています。フィールド上のデータオブジェクトを使用して単純な検証を実行することができます。JQueryフォームバリデーター付きのフォームフィールドの条件付きバリデーションRails Gem

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

ただし、条件付き検証ルールを追加する方法はわかりません。別のフィールドに特定の値が含まれている場合にのみ必要な特定のフィールドが必要です(例:#other_component_idは、selectフィールド#component_idに値として 'other'が含まれている場合のみ必要です)。

$ .validate()呼び出しでルールを追加しようとしましたが、適用されません。

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

特定のフォームにvalidate()メソッドを適用することもできません。

このアプリケーションは共有されているため、フォームの検証にjquery-form-validator-rails gemを使用する必要があります。

答えて

0

気にしないでください。検証を適用するために間違ったフォーマットを使用していたことが判明しました(「必須」の検証が機能していましたが、最大の長さはありませんでした)。

<%= 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' 
}); 

誰もが条件付き検証のより効率的な方法のための提案を持っている場合、私はそれを聞いて興味があると思います。

関連する問題