0

私は JavaScript プログラマーではありません。学習中なので、ばかげた間違いをお許しください。

ajax (jquery ajax ではない) を使用して顧客の詳細を保存しようとしていますが、これは高度な詳細の別のフォームを返します。入力ボックスの検証に jquery プラグインを使用しています。しかし、ajax によって返されたフォームでは検証が機能しません。

Ajax コード:

function createcustomer() {
    var firstname = _("firstname").value;
    var lastname = _("lastname").value;
    var email = _("email").value;
    var phone = _("phone").value;
    var status = _("status");
    if (firstname == "" || lastname == "" || email == "" || phone == "") {
        status.innerHTML = "Fill out all of the form data";
    } else {
        _("signupbtn").style.display = "none";
        status.innerHTML = 'please wait ...';
        var ajax = ajaxObj("POST", "save-customer.php");
        ajax.onreadystatechange = function () {
            if (ajaxReturn(ajax) == true) {

                if (ajax.responseText != "failure") {
                    _("signupform").innerHTML = "";

                    _("advancedform").innerHTML = ajax.responseText;


                } else {
                    window.scrollTo(0, 0);
                    _("signupform").innerHTML = "Error Occured";
                }
            }
        }
        ajax.send("firstname=" + firstname + "&lastname=" + lastname + "&email=" + email + "&phone=" + phone);
    }

}

function ajaxObj(meth, url) {
    var x = new XMLHttpRequest();
    x.open(meth, url, true);
    x.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    return x;
}

function ajaxReturn(x) {
    if (x.readyState == 4 && x.status == 200) {
        return true;
    }
}

私は ajax リターン コードを徹底的にテストしましたが、jquery はそのフォームで独立して動作します。これは、jquery 検証プラグインを開始する方法です。

$(document).ready(function()    {
    $('form').validationEngine();
});

createcustomer() 関数に正確なコードを入れて jquery 関数をリロードしようとしましたが、うまくいきません。ajax関数でそのjquery検証関数を呼び出す方法はありますか? どんな助けでも大歓迎です。

よろしくプリヤンシュ

4

1 に答える 1

2

検証が実行時に存在しないフォームを見つけようとしていると思われます。フォームがDOMに存在することを確認したら、検証バインディングを配置してみてください。これを実現するには、検証バインダーを配置する必要があります。

$('form').validationEngine();

... ajax がドキュメントに HTML データをロードした後のコールバック内。このような:

ajax.onreadystatechange = function() {
    if(ajaxReturn(ajax) == true) {

        if(ajax.responseText != "failure"){
            _("signupform").innerHTML = "";

            _("advancedform").innerHTML = ajax.responseText;
            $('#ajaxreturnform').validationEngine('attach'); //Here

        } else {
            window.scrollTo(0,0);
            _("signupform").innerHTML = "Error Occured";
        }
    }
}

私はここを見回して、この投稿の添付検証を見つけました。受け入れられた回答はあなたの問題も明らかにするかもしれません。フォームの #id だけでなく、バ​​インダーへのパラメーターとして「attach」コマンドを配置してみてください。

于 2013-08-15T19:05:48.403 に答える