【问题标题】:Using the remote function of jquery validation to check user existence使用jquery验证的远程功能检查用户是否存在
【发布时间】:2013-10-16 15:27:00
【问题描述】:

我想使用 Jquery Validator 插件来验证用户表单。有名字,姓氏和电子邮件是必需的。我还想根据名字、姓氏和电子邮件的组合来验证用户是否已经存在于系统中。我不知道如何为这种要求编写规则。请帮忙。谢谢。

$("#user").validate( {
            rules : {
            firstname : {
                required : true,
                remote: {
                  url : "../ajax/checkExisitingUse",
                  data: { lastname:  $('#lastname').val(),
                      email:  $('#email').val()
                        }
                type:post
                }

            },
            lastname : {
                required : true
            },
            email : {
                required : true,
                email : true
            }})

【问题讨论】:

  • remote 规则与其他规则一样,用于检查单个字段中的数据。换句话说,如果您需要针对服务器检查整个表单,那么您需要将整个表单提交给服务器。但是要将完整的表单提交到服务器,它需要首先通过您的 jQuery 验证... catch-22。你应该重新考虑你的整个方法。也许检查用户是否存在的部分应该仅通过您的服务器端验证来完成,然后在失败时简单地重新加载一个空白表单和一条消息。
  • 否则,只需使用三个字段之一来确定用户是否存在。毕竟,您应该有一个唯一的密钥。示例:如果您有十个具有相同通用名称的唯一用户,例如 John Smith,该怎么办?但由于他们实际上是十个不同的人,所以只有电子邮件地址是唯一的。

标签: jquery jquery-validate


【解决方案1】:

我可以看到的一个问题是如何为 ajax 请求读取数据......它应该是

$("#user").validate({
    rules: {
        firstname: {
            required: true,
            remote: {
                url: "../ajax/checkExisitingUse",
                data: {
                    lastname: function () {
                        return $('#lastname').val();
                    },
                    email: function () {
                        return $('#email').val();
                    }
                },
                type: post
            }

        },
        lastname: {
            required: true
        },
        email: {
            required: true,
            email: true
        }
    }
});

并且资源../ajax/checkExisitingUse如果值为value,则必须返回true,否则可以返回一个指示错误的字符串消息或false、undefined或null以显示默认错误消息

doc了解更多信息

【讨论】:

  • 感谢您指出错误。但我的大问题是我当前的代码不会触发姓氏和电子邮件字段的远程规则。我必须重复远程规则 3 次吗?
  • @Alex,远程规则只检查一个字段的数据。您可以在所有三个字段上使用它,但每个字段的数据都会单独检查。换句话说,first_name 字段的remote 规则只会检查first_name 字段中的数据。除非没有两个用户的名字相同,否则这肯定会失败。
猜你喜欢
  • 1970-01-01
  • 2013-05-10
相关资源
最近更新 更多