【问题标题】:JQuery validator not validating formJQuery验证器不验证表单
【发布时间】:2015-03-25 19:03:01
【问题描述】:

注意regex 的东西是实验性的,我已经尝试过,但仍然无法正常工作,如果可能的话,有人可以告诉我它是否有问题?

我看不出我在这里做错了什么。 document.ready中还有其他正确执行的函数,所以我觉得也不是。

我的代码:

function checkForm() {
$.validator.addMethod("regex", function(value, element, regexpr) {          
    return regexpr.test(value);
} );
$('#contactform').validate( { 
    rules: { 
        first: {
            required: true,
            minLength: true,
            regex: /^[A-z]{2,}$/
        },
        last: {
            required: true,
            minLength: true,
            regex: /^[A-z]{2,}(-[A-z]{2,})?$/
        },
        titledd: 'required',
        zhanum: {
            required: true,
            regex: /^(ZHA|zha)([0-9]{6})$/
        },
        emailadd: { 
            required: true,
            email: true
        },
        telephone: {
            regex: /^[0-9]{5,16}$/
        }
    },
    messages: {
        first: {
            required: "You must enter a first name",
            minLength: "Your first name must have more than 2 characters",
            regex: "Please enter a first name with more than two characters, where only letters are allowed"
        },
        last: {
            required: "You must enter a last name",
            minLength: "Your last name must have more than 2 characters",
            regex: "Please enter a last name with more than two characters, where only letters and optionally one hyphen are allowed"
        },
        titledd: {
            required: "Please select your title"
        },
        zhanum: {
            required: "You must enter your ZHA number",
            regex: "Your ZHA number should be ZHA followed by six numbers only"
        },
        emailadd: { 
            required: "You must enter an email address",
            email: "Please enter a valid email address"
        },
        telephone: {
            regex: "Please enter a telephone number with more than five characters and less than 16 characters, where only numbers are allowed"
        }
    }
} );
}

$(document).ready(function() {
    checkForm();
} );

【问题讨论】:

  • 什么错误也尝试将函数名称从regex更改为rehex1
  • 它没有出现错误,只是如果在字段中没有输入任何内容,它不会阻止它提交
  • 你的意思是如果用户没有输入任何内容,那么它不会显示任何错误。你能显示更多的部分代码吗?
  • 是的,无论输入什么,它都不会看到任何错误。其余的代码是次要的,例如其中一个字段中的默认文本和工具提示,它们可以正常加载。
  • 尝试删除函数和 document.ready .. 将选择器部分粘贴到表单之后,而不将其保留在函数中

标签: jquery regex jquery-validate


【解决方案1】:

试试这个:

$.validator.addMethod("regex", function(value, element, regexpr) {          
    return regexpr.test(value);
} );
$('#contactform').validate( { 
    rules: { 
        first: {
            required: true,
            minLength: true,
            regex: /^[A-z]{2,}$/
        },
        last: {
            required: true,
            minLength: true,
            regex: /^[A-z]{2,}(-[A-z]{2,})?$/
        },
        titledd: 'required',
        zhanum: {
            required: true,
            regex: /^(ZHA|zha)([0-9]{6})$/
        },
        emailadd: { 
            required: true,
            email: true
        },
        telephone: {
            regex: /^[0-9]{5,16}$/
        }
    },
    messages: {
        first: {
            required: "You must enter a first name",
            minLength: "Your first name must have more than 2 characters",
            regex: "Please enter a first name with more than two characters, where only letters are allowed"
        },
        last: {
            required: "You must enter a last name",
            minLength: "Your last name must have more than 2 characters",
            regex: "Please enter a last name with more than two characters, where only letters and optionally one hyphen are allowed"
        },
        titledd: {
            required: "Please select your title"
        },
        zhanum: {
            required: "You must enter your ZHA number",
            regex: "Your ZHA number should be ZHA followed by six numbers only"
        },
        emailadd: { 
            required: "You must enter an email address",
            email: "Please enter a valid email address"
        },
        telephone: {
            regex: "Please enter a telephone number with more than five characters and less than 16 characters, where only numbers are allowed"
        }
    }
} );

并确保在<form>标签之后保留它

【讨论】:

  • 发生了什么变化,只是功能外了吗?
  • 是的,确实如此。我猜是因为在validaot插件中我找不到一个好的功能示例。成功了吗?
【解决方案2】:

我发现了问题,在我的 HTML 中我有 id 属性而不是 name 属性,我没有意识到这是一个问题。

【讨论】:

  • 您没有在问题中显示 HTML,因此其他人无法正确回答此问题。由于此问题之前已多次解决,请考虑删除您的问题。谢谢。
  • 我知道,我不能删除它,因为它有答案,我会标记它
猜你喜欢
  • 2018-09-27
  • 1970-01-01
  • 1970-01-01
  • 2023-03-18
  • 1970-01-01
  • 1970-01-01
  • 2018-12-28
  • 2017-06-16
  • 2011-07-12
相关资源
最近更新 更多