Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/440.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何正确验证驻留在通过AJAX调用的文件中的表单_Javascript_Jquery_Ajax_Jquery Validate - Fatal编程技术网

Javascript 如何正确验证驻留在通过AJAX调用的文件中的表单

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: {

当表单位于使用AJAX在当前主页上拉入的php文件上时,使用提交按钮验证表单中的字段时遇到问题

下面是一些验证代码和不使用AJAX的简单表单:

这个简单的例子很好用。 现在,如果我将JS留在index.php中,但将表单放在ajax\u form.php中,我会遇到一个问题:

在index.php上:

<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();
   });
});