0

我不是一个javascript程序员,我正在学习,所以请原谅愚蠢的错误。

我正在尝试使用 ajax(它不是 jquery ajax)保存客户详细信息,它返回另一个表单以获取高级详细信息。我正在使用一个 jquery 插件来验证输入框。但是验证不适用于 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。

于 2013-08-15T19:05:48.403 回答