web-dev-qa-db-ja.com

jQuery Validateのすべてのフォーム入力から「必須」ルールを削除するにはどうすればよいですか?

上記のように、jQuery Validateを使用してフォームから必要なすべてのルールを削除するにはどうすればよいですか?

これは私が現在持っているものです:

var settings = $('form').validate().settings;

//alert(settings.rules.toSource());
for (var i in settings.rules){
    alert(i);
    delete settings.rules.i; 
    // ^ not sure about how to do this properly,
    // and how to just delete the 'required' rule and keep the rest intact
}

JQuery Validateにネイティブな関数は、未定義のエラーを返します。

$("input, select, textarea").rules('remove','required');
16
bcmcfc

時々あることですが、ここに投稿した直後に答えに出くわしたようです。

for (var i in settings.rules){
   delete settings.rules[i].required;
}

動作します。

4
bcmcfc

また、validateの内部設定をいじりたくない場合は、次のようにpublic関数を使用できます。

$('input, select, textarea').each(function() {
    $(this).rules('remove', 'required');
});

2番目のパラメーター(必須)を省略すると、「必須」だけでなく、すべてのルールが削除されることに注意してください。

21

必要な入力を削除する必要がある場合は、入力の属性も削除する必要があります。これをテストしてください。

$('element').rules('remove', 'required'); $('element').removeAttr('required');

0
Junior Laucel

Ignoreプロパティを使用して、クライアント側の検証のためにjquery検証ルールをグローバルに無効にすることができます(バリデーターオプション https://jqueryvalidation.org/validate/ を参照)。これは、サーバー側の検証をテストするのに役立ちます。

すべてのルールを無効にできます

$.validator.setDefaults({
  ignore: ":hidden, input, select, textarea"
})

これはjqueryセレクターなので、あなたもそうします、

$.validator.setDefaults({
  ignore: ":hidden, input[required], select[required], textarea[required]"
})

追加の入力については、必要に応じて追加してください。

開発環境では、次のようなものを使用してhtml検証を削除することもできます(セレクターが遅いため)。

$("*[required]").removeAttr("required");
$("*[maxlength]").removeAttr("maxlength");
$("*[minlength]").removeAttr("minlength");
$("*[pattern]").removeAttr("pattern");
0
jonmeyer