【问题标题】:jquery validate remote functionjquery验证远程功能
【发布时间】:2012-04-25 18:18:10
【问题描述】:

我在表单中使用了验证插件,但我在远程功能方面遇到了一些困难。

我正在使用它来 ajax 发布到一个文件,该文件又返回 true 或 false。 当我输入使用或使用用户名的电子邮件时,它会提示正确的错误消息。

但是当 ajax 返回 true 时,它​​不会做任何事情。也就是说,直到我单击电子邮件输入框,然后单击退出以重新触发它。然后它将验证它。我尝试了很多不同的解决方案,比如 onblur 触发器等。事情是,所有其他输入字段都可以开箱即用,没问题。 checkmail 文件非常直截了当,呼应真假,没有真正的问题..

这是一个电子邮件检查和一个用户名检查,两者的规则是相同的,除了它调用的文件:

$("#registerHere").validate({
onkeyup: false,  
onblur: true,
rules:{
                    usr_name: {
                    required: true,
                     minlength: 5,
                    remote: {
                    url: "inc/checkuser2.php",
                    type: "post",
                    async: false
                                    }
                    },
                    full_name:"required",
                    blog_name:"required",

user_email: {
    required: true,
    email: true,
    remote: {
        url: "inc/checkmail.php",
        type: "post",
        async: false,
        data: {
            user_email: function() {
                return $("#user_email").val()
            }
        }
    }
},
                    pwd:{
                        required:true,
                        minlength: 6
                    },
                    cpwd:{
                        required:true,
                        equalTo: "#pwd"
                    },
                    gender:"required"
                },

                messages:{
                    usr_name:{
                    required: "Velg et brukernavn",
                    minlength: "Minimum 5 bokstaver",
                    remote: "Dette brukernavnet er opptatt"
                    },

                    full_name:"Skriv inn navnet ditt",
                    blog_name:"Velg en tittel til bloggen din",

                    user_email:{
                        required: "Fyll inn e-post adressen din",
                        email:"Dette er ikke en gyldig e-post adresse",
                        remote:"Denne e-posten finnes allerede"
                    },
                    pwd:{
                        required:"Velg passord",
                        minlength:"Passordet må ha 6 tall og bokstaver"
                    },
                    cpwd:{
                        required:"Gjenta passordet",
                        equalTo:"Passordene er ikke like"
                    },
                    gender:"Velg kjønn"
                },

                errorClass: "help-inline",
                errorElement: "span",
                highlight:function(element, errorClass, validClass) {
                    $(element).parents('.control-group').addClass('error');
                },
                unhighlight: function(element, errorClass, validClass) {
                    $(element).parents('.control-group').removeClass('error');
                    $(element).parents('.control-group').addClass('success');
                }

            });

这是我的 checkmail.php(一旦运行就会清理):

$duplicate = mysql_query("select count(*) as total from users where user_email='$user' ") or die(mysql_error());
    list($total) = mysql_fetch_row($duplicate);
        if ($total > 0)
        {
    $valid = 'false';
        } else {
    $valid = 'true';
        }
    echo $valid;
    exit;

这并不重要,因为表单似乎已提交,但当我离我想要的如此接近时,我会讨厌这样离开它!

希望这是可以理解的,如果我阅读并尝试了谷歌给我的一切,我将非常感谢任何帮助!

【问题讨论】:

  • 你能告诉我们错误吗?是什么让它不起作用
  • 这不是一个错误,因为实际上没有发生任何事情。它根本不会在第一时间触发验证事件。我必须通过再次单击输入来重新触发它。然后它工作正常。但是,如果使用电子邮件,它将在第一次触发时触发。
  • 你试过使用api.jquery.com/trigger吗?
  • 好吧,当我向下移动表单时,验证会触发。只是电子邮件和用户名规则出了问题。如果电子邮件或用户名返回 true,则需要额外单击才能触发。在 false 上它可以正常工作。
  • 通过将 async 设置为 true 并在 addclass 行中添加一行,在添加类错误之前删除成功,使其现在可以工作。似乎工作......如果有人有比这更好的方法,请分享! =)

标签: php jquery validation


【解决方案1】:

我相信当涉及到表单验证插件中的 AJAX 时,您需要使用回调并返回元素。

onkeyup: function(element) {
    this.element(element);
}

这样做的缺点是它会在每次按键时执行您的 AJAX,因此您需要在回调中执行某种检查。例如:

onkeyup: function(element) {
    if ( element.type == 'password' )
        this.element(element);
    else
        return true;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-17
    • 2013-01-20
    相关资源
    最近更新 更多