上記のように、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');
時々あることですが、ここに投稿した直後に答えに出くわしたようです。
for (var i in settings.rules){
delete settings.rules[i].required;
}
動作します。
また、validateの内部設定をいじりたくない場合は、次のようにpublic関数を使用できます。
$('input, select, textarea').each(function() {
$(this).rules('remove', 'required');
});
2番目のパラメーター(必須)を省略すると、「必須」だけでなく、すべてのルールが削除されることに注意してください。
必要な入力を削除する必要がある場合は、入力の属性も削除する必要があります。これをテストしてください。
$('element').rules('remove', 'required'); $('element').removeAttr('required');
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");