gpt4 book ai didi

jquery - 如何在具有 defaultValue 的可选字段上使用 jQuery Validator 自定义方法?

转载 作者:行者123 更新时间:2023-12-01 01:28:09 24 4
gpt4 key购买 nike

我正在使用最新版本的jQuery Validator plugin以及 jQuery (1.6.2)。

在电话号码的可选字段中,我有一个defaultValue

HTML:

<input type="text" class="autoclear blur" value="your telephone number" name="Phone" />

我按照 this thread 安装了用于验证电话号码的自定义方法。这个想法是,即使该字段是可选的,我仍然想在输入文本时验证它。

jQuery/JavaScript:

$(document).ready(function() {

var nameMsg = "Please enter your full name.",
emailMsg = "Please enter your email address.",
emailMsgV = "This is not a valid email address.",
commentsMsg = "Please enter your comments.";

$.validator.addMethod('phone', function (value, element) {
return this.optional(element) || /^[01]?[- .]?\(?[2-9]\d{2}\)?[- .]?\d{3}[- .]?\d{4}$/.test(value);
}, 'This is not a valid number.');

$('#contactForm').validate({
onkeyup: false,
validClass: 'valid',
rules: {
Name: {
required: true
},
email: {
required: true,
email: true
},
Phone: {
required: false,
phone: true
},
Comments: {
required: true
}
},
messages: {
Name: nameMsg,
email: {
defaultInvalid: emailMsg,
required: emailMsg,
email: emailMsgV
},
Comments: commentsMsg
},
success: function(error) {
setTimeout(function() { // Use a mini timeout to make sure the tooltip is rendred before hiding it
$('#contactForm').find('.valid').qtip('destroy');
}, 1);
},
submitHandler: function(form) {
$('#contactForm .autoclear').each(function() {
if (this.value === this.defaultValue) {
this.value = '';
}
});
form.submit();
},
errorPlacement: function(error, element) {
$(element).filter(':not(.valid)').qtip({
overwrite: false,
content: error,
position: {
my: 'left center',
at: 'right center'
},
show: {
event: false,
ready: true
},
hide: false
}).qtip('option', 'content.text', error);
} // closes errorPlacement
}) // closes validate()

}); // closes document.ready()

问题是,由于我在这个可选字段上有一个 defaultValue ,所以它也得到了验证。

是否可以编辑phone 的自定义方法,使其在字段留空时忽略该字段上的defaultValue

我尝试用 if/then 包围正则表达式,但这似乎不起作用。

$.validator.addMethod('phone', function (value, element) {
if (value != element.defaultValue) {
return this.optional(element) || /^[01]?[- .]?\(?[2-9]\d{2}\)?[- .]?\d{3}[- .]?\d{4}$/.test(value);
}
}, 'This is not a valid number');

在思考它是如何工作的之后,我知道这是错误的方法......所以现在我迷路了。

最佳答案

似乎您需要从传递给 addMethod 的函数中返回某些内容:

$.validator.addMethod('phone', function (value, element) {
if (value != element.defaultValue) {
return this.optional(element) || /^[01]?[- .]?\(?[2-9]\d{2}\)?[- .]?\d{3}[- .]?\d{4}$/.test(value);
}
return true;
}, 'This is not a valid number');

示例: http://jsfiddle.net/L3S9e/

关于jquery - 如何在具有 defaultValue 的可选字段上使用 jQuery Validator 自定义方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7720753/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com