jQuery验证,提交处理程序和提交表单

Mar*_*iaZ 0 php ajax jquery jquery-validate .post

我在执行以下代码时遇到一些问题.

  1. 代码提交但它没有做任何事情,它回到同一个屏幕,似乎表单的值没有被提交.

    <script type="text/javascript">
    $(document).ready(function(){
        $("#signin_form").validate({
              debug: false,
              rules: {
               ///
               },
               messages: {
               ///
               },
              submitHandler: function(form) { 
                  var result;
    
            $.post('test.php', $('#signin_form').serialize(),    function(data){
                result = $.parseJSON(data);
    
                if (result.flag == 'false'){
                    $('#results').show()
                }
            })
            .success(function(data){
                if (result.flag == 'true'){
                    form.submit();
                }
    
            }, 'json');
    
           }
       });
    });
    </script>
    
    Run Code Online (Sandbox Code Playgroud)
  2. 如果我将代码改为以下,它可以工作,它需要我到正确的屏幕,但我需要验证,验证码,我不知道它是否是正确的地方,我尝试使用beforeSubmit但然后验证码未经验证.

    <script type="text/javascript">
    $(document).ready(function(){
        $("#signin_form").validate({
              debug: false,
              rules: {
               ///
               },
               messages: {
               ///
               },
              submitHandler: function(form) { 
                  form.submit();
    
    
           }
       });
    });
    </script>
    
    Run Code Online (Sandbox Code Playgroud)

有一些关于$ .post的东西,我不反感...并且没有提交信息.

有谁知道它可能是什么?谢谢!

Osc*_*car 5

form在这种情况下,您不需要更改提交的方式,以验证验证码,使用remote函数jquery.validate.

remote使用时遇到一些问题jquery.validate.检查您是否执行了以下操作:

1)确保您仅使用jQuery 1.6.1及更高版本.

2)使用"同步"选项进行远程执行(默认为异步)并将此async参数设置为false.


用法示例:

假设这是我的表格......

HTML:

添加idname属性到所有表单元素或只是验证码(这个必须两者都有).

<form id="signin_form" action="save.php" method="POST">
  Enter captcha: O1S2C3A4R
  <br/>
  <input type="text" id="captcha" name="captcha" value=""/>
  <input type="submit" id="save" name="save" value="Save"/>
</form>
Run Code Online (Sandbox Code Playgroud)

jQuery的:

添加type,asyncdata论据.最后一个参数将captcha值传递给check.php文件,这就是该元素需要该id属性的原因.然后你就可以使用这个选择器了$('#captcha').

(对我来说这是更好的,但你也可以使用其他选择器类型按名称调用元素)

要知道,您还需要为此定义错误消息remote,在本例中我使用了无效的验证码.

$(document).ready(function(){

    $("#signin_form").validate({
        rules: {
            captcha: {
                required: true,
                remote: { 
                    url:"check.php",
                    type:"post",
                    async:false,
                    data: {
                        /* this is the name of the post parameter that PHP will use: $_POST['captcha'] */
                        captcha: function() {
                            return $.trim($("#captcha").val());
                        }
                    }
                }
            }
        },
        messages: {
            captcha: {
                required: "*",
                remote: "Invalid captcha"
            }
        }
    });

});
Run Code Online (Sandbox Code Playgroud)

PHP:check.php

此时,如果验证码有效,使用"true""false"作为字符串来了解jquery.validation插件是很重要的.在这种情况下,如果验证码等于O1S2C3A4R则有效,并且在客户端,您将看到submit将处理html 属性中指定的formto save.php文件form action.

<?php

    $captcha = $_POST['captcha'];

    if($captcha == "O1S2C3A4R"){
        echo "true";
    } else {
        echo "false";
    }

?>
Run Code Online (Sandbox Code Playgroud)

通过这种方式,您可以form毫无问题地验证整体并远程检查验证码值,而无需更改插件功能.

你也可以一起测试所有这些代码,看看它是否有效:-)

希望这可以帮助.