jQuery Validation Pluginを使用してプログラムでフォームが有効かどうかを確認する方法


93

いくつかのボタンのあるフォームがあり、http://jquery.bassistance.de/validate/の jQuery Validation Pluginを使用しています。私のJavaScriptコードのどこからでも、jquery検証プラグインによってフォームが有効な状態と見なされるかどうかを確認できる方法があるかどうかを知りたいだけです。


2
:HTML5とバニラJS(なしjQueryの)を使用したい方のためにstackoverflow.com/questions/12470622/...
2540625

回答:


141

.valid()jQuery Validationプラグインから使用:

$("#form_id").valid();

選択したフォームが有効かどうか、または選択したすべての要素が有効かどうかを確認します。このメソッドを使用してフォームをチェックする前に、フォームでvalidate()を呼び出す必要があります。

ここで、フォームid='form_id'はすでに.validate()呼び出されているフォームです。


ありがとう、私はすでに次のようなことをしていました:$ j( "#myform label.error")。each(function(i、e){if($ j(e).css( 'display')!= 'none' ){existErrors = true;}}); :Sありがとう
ハイメHablutzel

@jaime:問題ありません。喜んでお手伝いします:)
Andrew Whitaker

実際には、最初にフォームで.validate()を実行する必要はありません。if(form.valid()){}で簡単に実行でき、それが機能します。ここで、「form」は対象とするフォーム要素です。
Gareth Daine、2014年

11
TypeError:$( "#myForm")。valid()は関数ではありません。
artgrohe 2018年

2
TypeError valid() not a functionプラグインを受け取っている場合は、そのプラグインがjqueryライブラリに含まれていないため、ファイルにプラグインを追加してください。<script src="https://cdn.jsdelivr.net/jquery.validation/1.16.0/jquery.validate.min.js"></script>
StackEdd

33

2015年の回答:これは最新のブラウザーでそのまま使用できます。jQueryHTML5 CheckValidity APIを使用するだけです。これを行うためのjquery-html5-validityモジュールも作成しました。

npm install jquery-html5-validity

次に:

var $ = require('jquery')
require("jquery-html5-validity")($);

それからあなたは走ることができます:

$('.some-class').isValid()

true

1
各要素ではなくフォーム全体で呼び出すことができますか?
15

1
すごい!私が探していたもの
Fester

valid関数を呼び出すこともvalidateフォームを検証することもないので、私は関数よりもこれを好みます。
KevinAdu

@parisssss要求に応じて、複数の選択に対してそれを実行するモジュールを作成しました。
mikemaccana 2016

19

@mikemaccanaの回答が役立ちます。

また、https://github.com/ryanseddon/H5Fも使用しました。で発見http://microjs.com。これはある種のポリフィルであり、次のように使用できます(例ではjQueryを使用しています)。

if ( $('form')[0].checkValidity() ) {
    // the form is valid
}

フォームの検証がトリガーされないため、こちらの方が優れています
Bishoy Hanna

パターン属性を操作します。ありがとう。
MJヴァキリ


4

iContribute:正解に遅すぎることはありません。

var form = $("form#myForm");
if($('form#myForm > :input[required]:visible').val() != ""){
  form.submit();
}else{
  console.log("Required field missing.");
}

このように、「必須」フィールドの基本的なHTML5検証は、フォームの「名前」値を使用した標準の送信を妨げることなく行われます。


。なお、:input及び:visibleセレクタは、CSSの一部jQueryの拡張ではありません。詳細はドキュメント
Geradlus_RU 2017

3
フォームもあるため、パターンマッチングのだけでなく、必要なフィールドが不足しているため無効になることができます
率直

4

入力のグループについては、@ mikemaccanaの回答に基づいて改善されたバージョンを使用できます

$.fn.isValid = function(){
    var validate = true;
    this.each(function(){
        if(this.checkValidity()==false){
            validate = false;
        }
    });
};

これを使用して、フォームが有効かどうかを確認できます。

if(!$(".form-control").isValid){
    return;
}

同じテクニックを使用して、すべてのエラーメッセージを取得できます。

$.fn.getVelidationMessage = function(){
    var message = "";
    var name = "";
    this.each(function(){
        if(this.checkValidity()==false){
            name = ($( "label[for=" + this.id + "] ").html() || this.placeholder || this.name || this.id);
            message = message + name +":"+ (this.validationMessage || 'Invalid value.')+"\n<br>";
        }
    })
    return message;
}

.each()を実行するためのjQueryプラグインを作成しました。
mikemaccana 2016

1

Magentoの場合、以下のような方法でフォームの検証を確認します。

あなたはこれを試すことができます:

require(["jquery"], function ($) {
    $(document).ready(function () {
        $('#my-button-name').click(function () { // The button type should be "button" and not submit
            if ($('#form-name').valid()) {
                alert("Validation pass");
                return false;
            }else{
                alert("Validation failed");
                return false;
            }
        });
    });
});

これがあなたに役立つことを願っています!

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.