我不是一个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
答案 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。