无法在ajax返回的代码中调用jquery函数

时间:2013-08-15 19:01:46

标签: javascript jquery ajax

我不是一个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验证函数吗? 任何帮助将不胜感激。

此致 Priyanshu

1 个答案:

答案 0 :(得分: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";
        }
    }
}

我在这里环顾四周,发现这篇文章Attach Validation接受的答案也可以解决你的问题。尝试将'attach'命令作为参数添加到活页夹以及表单的#id。