1

Foundation 6 Abide を使用して、パターンに対してユーザー名フィールドをチェックし、ユーザー名が既に登録されているかどうかを確認するためにサーバーにアクセスする必要があるカスタム バリデーターを作成しました。カスタムバリデーターが実行されると、最初に正規表現パターンに対してユーザー名をテストします。それが成功した場合は、サーバーへの ajax 呼び出しを実行して、ユーザー名が存在するかどうかを確認します。JavaScript は待機しないため、カスタム バリデータ関数は「true」を返し、すべて問題がないことを示します。ユーザー名が見つかった場合、ajax 呼び出しが完了すると、フィールドで「addErrorClasses」が呼び出されます。これは完全に機能しますが、以前はバリデーターが ajax を待ちたくなかったので "true" を返していたので、"false" を返す方法がないことを懸念しています。

質問: addErrorClasses 関数を呼び出すと、フィールドが無効としてマークされ、フォームが無効な状態になりますか?

Foundation.Abide.defaults.validators.validate_username =
    function($el,required,parent) {
    // parameter 1 is jQuery selector
        if (!required) return true;

        let val = $el.val();

        // Step 1 - check that it meets the pattern
        if (!val.length)
            return true;

        let valid = new RegExp(username_pattern).test(val);
        if (!valid)
            return false;

        // Step 2 - check that the username is available
        $.ajax({
            url: "http://localhost:3000/users/"+val,
        }).done(function(data) {
            $('#demo-form').foundation('addErrorClasses',$el);
            console.log(data);
        }).fail(function() {
            // do nothing for now
        });

        return true;
};
4

1 に答える 1