1

PHPとJavaScriptを検証するフォームがあります。

JavaScript の検証をリアルタイムに変更したいと考えています。送信ボタンをクリックした後にユーザーが正しい情報または間違った情報を入力すると、クラスとメッセージが追加されるように設定しました。これは私がしばらく使用してきた検証であり、ライブ検証に更新したいと考えています。対応する関数を使用して、入力フィールドに onblur(myFunction) などを追加しようとしました。それはうまくいかないようです。私はJavaScript初心者です。スクリプトにはかなりのオーバーホールが必要になると思いますが、誰かが私を正しい方向に向けることができます. これの一部を行うjqueryプラグインがあることは認識していますが、既存のコードを使用するのではなく、それがどのように発生するかを知りたいです。

        $(function () {
        $('#contact_form').submit(function(e) {
            e.preventDefault();
            var form = $(this);
            var post_url = form.attr('action');
            var post_data = form.serialize();
            var submit_form = false;

            *validation here*

            if (pcount == 0 && pcount2 == 0 && pcount3 == 0) {
                submit_form = true;
            }

            if (submit_form) {
                $('#loader', form).html('<img src="assets/img/loader.gif" /> Please Wait...');
                $.ajax({
                    type : 'POST',
                    url : post_url,
                    data : post_data,
                    success : function(msg) {
                        $(form).fadeOut(500, function() {
                            form.html(msg).fadeIn();
                        });
                    }
                });
            }
        });

    });
4

1 に答える 1

1

それほど難しいことではありません。次のように送信と検証を分離するだけです。

$.fn.validateMyForm = function() {
    var form = $(this);
    /* validation */
    if (pcount == 0 && pcount2 == 0 && pcount3 == 0) {
        return true;
    }
    return false;
}

$(function () {
    $('#contact_form').submit(function(e) {
        e.preventDefault();
        var form = $(this);
        var post_url = form.attr('action');
        var post_data = form.serialize();
        if ($(form).validateMyForm()) {
            /* ajax sending */
        });
    }
});

そして、必要に応じてぼかしイベントに検証を追加します。

$("input").blur({
    $('#contact_form').validateMyForm();
});
于 2013-03-15T22:46:41.933 に答える