0

Bootstrap バリデーターに関する質問です。このプラグインを使用しています: Validator

私は<form>「マスク」と名付けたいくつかのグループを持つ大規模なグループを持っています。各マスクは、いくつかの「フィールド」で構成されています。各フィールドには、通常<input>の、 などを指定できます。これらの各フィールドには、field_1に、 field_2に など<select>の固有のルールがあります。requireddata-minLength="5"maxlength="30"

必要な動作: これらのグループ/マスクのいずれかが有効な場合は、送信ボタンを再度有効にして、フォームを部分的に送信できるようにします。フォームのすべての部分が入力されるまで待たないでください。問題: COMPLETE フォームのすべてのバリデータ ルールを満たすまで、送信ボタンが完全に無効になります。これは私が望んでいるものではありません。フォーム全体のうち、1 つ以上のグループがそれ自体で有効な場合は、送信ボタンをアクティブにします。

私が試したこと:

$("#inputForm").on("change", function () {
        $("#inputForm").find("*[id^=mask_]").each(function() {
            var valid = true;
            $(this).find("input[id^=field_], select[id^=field_]").each(function() {
                if(!$(this).val()) {
                    valid = false;
                }
            });

            if(valid) {
                $("#inputForm").find(":submit").prop("disabled", false);
                $("#inputForm").prop("novalidate", false)
            }
        });
    });

どうやってするか?私のコードはif(valid)句に到達しますが、送信ボタンを再アクティブ化しません...またsubmit()、フォームを呼び出して1つのグループが有効な場合は、自動送信しないでください。ユーザーが送信できるようにするためにボタンのみをアクティブ化します今それ。

ありがとう!

4

1 に答える 1

0

わかりました、2時間検索して試した後、これが私がやったことです:

  1. オプション disable をスローし、false に設定します。

    $(document).ready(function () {
            $("#inputForm").validator({
                disable: false
            });
    });
    

これにより、送信ボタンが常にクリック可能になることが保証されます。ただし、これでもonSubmit()バリデーターの関数が呼び出され、「いいえ、まだ有効ではありません」と言われます。

  1. min.js に以下を追加して、この非常にフォームのみを確実onSubmit()に送信できるようにするために検証を無視しますが、まだ 100% 有効ではありません。

    c.prototype.onSubmit=function(a){if(c.attr("id")!="inputForm"){this.validate(),(this.isIncomplete()||this.hasErrors())&&a.preventDefault()}}
    

これにより、バリデーターonSubmit()はフォーム #inputForm の を無視できます。

注意:これはもちろんバリデータの目的ではないため、通常は使用しないでください。これにより、js バリデーターが単なるグラフィカル バリデーターに削減され、単に「ここに何か問題がありますが、とにかく送信したい場合は送信してください」と言うだけです。そうする場合、私たちが行ったように、サーバー側でそのようなものをキャッチする必要があります。

于 2015-12-14T22:53:47.483 に答える