0

我尝试使用 ajax 在同一页面上实现 3step 向导。我使用两个 php 文件来创建 Form2 和 Form3。第一步创建Form2没有问题。但我被困在创建 Form3 的第二步。我已根据以下建议更改了 Form2 的验证代码,这是新代码。createForm3.php 返回的数据是正确的,但不能在 div id="form3" 处显示。

<script type="text/javascript">
  $(document).ready(function(){
    $("#form1").validate({ ...
      alert("I am in form1 validation");
      submitHandler: function(form) {   
              $.post('createForm2.php', $("#form1").serialize(), function(data) {
            $('#form2').html(data); 
                    $("#form2").validate({ ...
                    alert("I am in form2 validation");
                    submitHandler: function(form) {
                    $.post('createForm3.php', $("#form2").serialize(), function(data) {
                       alert(data);
               $('#form3').html(data);  });}});
   });}});      

});
</script>
<body>
<form name = 'form1' id = 'form1' action = '' method = 'POST'>
....
<input type = 'submit' name = 'submit' value = 'Submit'>
</form>
<div id="form2"><div>
<div id="form3"><div>
</body>

在 createForm3.php 中进行测试: echo " Show form 3 ";

4

2 回答 2

0

You are activating the validate function on form2 while it is still doesn't exist, so the validation method is never called on form2.

What you need to do is call the form validation on form2 in the ajax callback:

$(document).ready(function(){
    $("#form1").validate({ ...
      submitHandler: function(form) {   
              $.post('createForm2.php', $("#form1").serialize(), function(data) {
                    $('#form2').html(data); 
     $("#form2").validate({ ...})

   });}});


    });
于 2012-07-09T14:10:21.120 回答
0

据我所知,您可能需要将#form2验证事件处理程序移至#form1提交处理程序的成功函数。

现在,当您将事件处理程序附加到 时#form2,该元素中还没有表单,因为它是使用 ajax 创建的,因此您尝试附加到它的任何内容都会失败。

于 2012-07-09T14:04:53.087 回答