Jquery Ajax和Scriptaculous表单验证

时间:2012-02-19 17:48:57

标签: php jquery ajax scriptaculous

我有一个使用scriptaculous表单验证的表单,但我使用的是jquery ajax。在添加ajax之前,表单验证工作正常。一旦我添加了ajax,就像表单不再有效。 ajax只是在没有验证的情况下对表单进行求和。这就像ajax绕过了验证。

      <script type="text/javascript">
      jQuery('form').delay(3000).submit(function() {
      string = jQuery("form").serializeArray();

      jQuery.ajax({
    type: "POST",
    url: "../script_insert.php",
    data: string,
    dataType: "html",
    success: function(html){
      jQuery('#Right_Content').hide().html(html).fadeIn("slow");;

       }
       })
       return false;
       });
       </script>

但是当我从页面中删除ajax时,它一切正常。页面验证。任何人都可以告诉我如何确保在ajax提交之前进行表单验证。我尝试了jquery延迟,但这也不起作用。感谢。

2 个答案:

答案 0 :(得分:1)

为什么不添加验证作为.submit()的第一件事?这样,无论有多少表单字段有焦点,您都确定表单已经过验证。

jQuery('form').submit(function() {
    if (validate()) {
        string = jQuery("form").serializeArray();
        ...
    } else {
        return false;
    }
});

答案 1 :(得分:0)

  1. 为了防止进一步的错误,我建议您使用绝对路径进行提交。而不是url="../script_insert.php"使用完整路径"url="http://www.yoursite.com/script_insert.php"

  2. 2.听起来你的剧本中没有“防止默认”。您需要做两件事:在加载之前清除输入和显示错误的div!


    编号2:您可以使用放置在

    中的jQuery提交替换ajax提交
    `"$(document).ready(function(){
    $('#your_form').submit(function(){
    $.post("http://your_site.com/script_insert.php",{ first_variable:$('#first_input_field').val(),second_variable:$('#second_input_field').val(),rand:Math.random()},function(data){
    if(data=='yes'){do something}
    if(data=='no'){do something else}});
    return false;});
    });
        });'
    

    在PHP验证中,如果输入正确且表单有效,请回显“是”,否则回显“否”。或者你想要的任何其他词。这也允许更大的灵活性。编辑以上内容以满足您的需求。根据需要添加变量,这样一切都将是jQuery。如果你想看一个有效的例子,给我发一条私信,我会告诉你它是如何工作的。有了上面的代码,我从来没有遇到任何问题。据我所知,jQuery还会在发送post请求之前自动清理输入,这为您提供了某种形式的安全性。