Javascript 如何正确验证驻留在通过AJAX调用的文件中的表单
当表单位于使用AJAX在当前主页上拉入的php文件上时,使用提交按钮验证表单中的字段时遇到问题 下面是一些验证代码和不使用AJAX的简单表单: 这个简单的例子很好用。 现在,如果我将JS留在index.php中,但将表单放在ajax\u form.php中,我会遇到一个问题: 在index.php上:Javascript 如何正确验证驻留在通过AJAX调用的文件中的表单,javascript,jquery,ajax,jquery-validate,Javascript,Jquery,Ajax,Jquery Validate,当表单位于使用AJAX在当前主页上拉入的php文件上时,使用提交按钮验证表单中的字段时遇到问题 下面是一些验证代码和不使用AJAX的简单表单: 这个简单的例子很好用。 现在,如果我将JS留在index.php中,但将表单放在ajax\u form.php中,我会遇到一个问题: 在index.php上: <script> $(document).ready(function () { $("#contactform").validate({ rules: {
<script>
$(document).ready(function () {
$("#contactform").validate({
rules: {
name: {
required: true,
minlength: 3
},
},
submitHandler: function () {
alert('valid form submission');
return false;
}
});
});
</script>
$(document).ready(function() {
$("#contactform").validate({
name: {
required: true,
minlength: 3
},
})
$('#btn').click(function() {
$("#contactform").valid();
});
});
<input id="btn" type="submit" />
表单元素必须先加载到DOM中,然后才能附加jQuery验证函数。因此,我希望将表单移动到index.php文件并隐藏它,直到需要为止,或者将jQuery验证代码移动到editCase函数,或者将jQ验证代码放在函数中并将该函数附加到editCase函数中的表单 下面是最后一个选项的示例:
function contactform_validation() {
$("#contactform").validate({
rules: {
name: {
required: true,
minlength: 3
},
},
submitHandler: function () {
alert('valid form submission');
form.submit();
},
invalidHandler: function () {
alert('INvalid form submission');
return false;
}
});
}
function editCase(str) {
if (str=="") {
document.getElementById("txtHint").innerHTML="";
return;
}
if (window.XMLHttpRequest) {
// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
} else { // code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function() {
if (xmlhttp.readyState==4 && xmlhttp.status==200) {
document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
contactform_validation(); // <--- THIS IS NEW
}
}
xmlhttp.open("GET","ajax_form.php?q="+str,true);
xmlhttp.send();
$(document).ready(function(){
$('.overlay').show();
$('.button').show();
});
}
函数contactform_validation(){
$(“#联系人表单”)。验证({
规则:{
姓名:{
要求:正确,
最小长度:3
},
},
submitHandler:函数(){
警报(“有效表格提交”);
表单提交();
},
invalidHandler:函数(){
警报(“无效表单提交”);
返回false;
}
});
}
函数editCase(str){
如果(str==“”){
document.getElementById(“txtHint”).innerHTML=“”;
返回;
}
if(window.XMLHttpRequest){
//IE7+、Firefox、Chrome、Opera、Safari的代码
xmlhttp=新的XMLHttpRequest();
}else{//IE6、IE5的代码
xmlhttp=新的ActiveXObject(“Microsoft.xmlhttp”);
}
xmlhttp.onreadystatechange=函数(){
if(xmlhttp.readyState==4&&xmlhttp.status==200){
document.getElementById(“txtHint”).innerHTML=xmlhttp.responseText;
contactform_validation();//您正在使用JQuery,因此您可以像这样使用load()
函数:
$('#txtHint').load("ajax_form.php?q="+str , null, function (){
//and here in your callback function, you can attach all behaviors to your form, for example:
$("#contactform").validate({
name: {
required: true,
minlength: 3
},
})
$('#btn').click(function() {
$("#contactform").valid();
});
});
您好,我理解您的意思:后续问题…当我将javascript放入ajax_form.php文件时,它不会处理。例如,如果我放入一个简单的警报(“工作”);它不起作用。我甚至尝试通过php回显JS警报。它应该正常工作吗?哎呀,我搞砸了。我说的是将验证代码放在ajax_form.php文件中。相反,将验证代码放在editCase函数中。我编辑了上面的响应。通过运行我的updateCase()函数使其正常工作(在我的editCase进程之后..在editCase.php上保存表单时)在contactform_validation()中,因此保存按钮的onclick调用contactform_validation(),然后如果它有效,updateCase()将运行。嗨,我会将它添加到我的editCase函数中吗?它会取代我的xmlhttp.open(“GET”,“ajax_form.php?q=“+str,true);或我的任何其他代码?您好@Chain,是的,您可以将ajax代码从if(window.XMLHttpRequest)
…替换为xmlhttp.send();
//Edit Case
function editCase(str) {
if (str=="") {
document.getElementById("txtHint").innerHTML="";
return;
}
if (window.XMLHttpRequest) {
// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
} else { // code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function() {
if (xmlhttp.readyState==4 && xmlhttp.status==200) {
document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","ajax_form.php?q="+str,true);
xmlhttp.send();
$(document).ready(function(){
$('.overlay').show();
$('.button').show();
});
}
function contactform_validation() {
$("#contactform").validate({
rules: {
name: {
required: true,
minlength: 3
},
},
submitHandler: function () {
alert('valid form submission');
form.submit();
},
invalidHandler: function () {
alert('INvalid form submission');
return false;
}
});
}
function editCase(str) {
if (str=="") {
document.getElementById("txtHint").innerHTML="";
return;
}
if (window.XMLHttpRequest) {
// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
} else { // code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function() {
if (xmlhttp.readyState==4 && xmlhttp.status==200) {
document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
contactform_validation(); // <--- THIS IS NEW
}
}
xmlhttp.open("GET","ajax_form.php?q="+str,true);
xmlhttp.send();
$(document).ready(function(){
$('.overlay').show();
$('.button').show();
});
}
$('#txtHint').load("ajax_form.php?q="+str , null, function (){
//and here in your callback function, you can attach all behaviors to your form, for example:
$("#contactform").validate({
name: {
required: true,
minlength: 3
},
})
$('#btn').click(function() {
$("#contactform").valid();
});
});