【问题标题】:Jquery Ajax and Scriptaculous Form ValidationJquery Ajax 和 Scriptaculous 表单验证
【发布时间】:2012-02-19 17:48:57
【问题描述】:

我有一个使用 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 延迟,但这也不起作用。谢谢。

【问题讨论】:

  • 仅供参考,您只需要编写一次长的jQuery(function($){ /* your code */ })(jQuery); - 在该函数中您放置您的代码并改用$。如果您需要 $ 访问例如原型,你至少可以为 jQuery 使用 $j - 可读性更高,编写更少。
  • 谢谢。我第一次同时使用 jquery 和 scriptaculous,所以仍在学习有关冲突的规则。谢谢。
  • 我的建议:扔掉原型/scriptaculous。你能想象到的几乎所有东西都可用于 jQuery。对于验证,例如有 bassistance.de/jquery-plugins/jquery-plugin-validation
  • @ThiefMaster 我没有使用低音炮的唯一​​原因是因为我没有得到它来验证模糊。你知道如何让它验证模糊,而不仅仅是提交吗?我很想保留 jquery 的所有内容。谢谢。

标签: php jquery ajax scriptaculous


【解决方案1】:

为什么不将验证作为.submit() 所做的第一件事呢?这样,无论有多少表单字段具有焦点,您都可以确保表单得到验证。

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

【讨论】:

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

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


    第 2 点:您可以将 ajax 提交替换为放置在

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

    【讨论】:

      猜你喜欢
      • 2011-12-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-04
      相关资源
      最近更新 更多