如何使用jQuery验证插件规范化有效值?
让我们看一个简单的场景,其中要求用户输入加拿大邮政编码。以下邮政编码均有效且等效:如何使用jQuery验证插件规范化有效值?,jquery,validation,Jquery,Validation,让我们看一个简单的场景,其中要求用户输入加拿大邮政编码。以下邮政编码均有效且等效: h0h0h0 h0h0h0 h0h0h0 我希望用户输入其中的任何一个,但一旦该字段被保留,就可以将值规范化为第一个表单。我的postalCode验证方法确实允许输入其中任何一个,但是,我想知道规范化值的正确方法是什么 也许jQuery验证插件中已经有了这样的功能,我只是看不到 编辑 给定一个函数normalizeInput我想知道如何插入它。也许jQuery验证插件中有一个专门用于此目的的钩子。如果没有,如
- h0h0h0
- h0h0h0
- h0h0h0
postalCode
验证方法确实允许输入其中任何一个,但是,我想知道规范化值的正确方法是什么
也许jQuery验证插件中已经有了这样的功能,我只是看不到
编辑
给定一个函数normalizeInput
我想知道如何插入它。也许jQuery验证插件中有一个专门用于此目的的钩子。如果没有,如何执行此操作,以便在验证成功后保留字段后调用它。请尝试以下操作:
function normalizePostalCode(s) {
return s.replace(/(.{3}) ?(.{3})/, '$1 $2').toUpperCase();
}
var s = "h0h0h0";
s = normalizePostalCode(s); // H0H 0H0
它将删除空白(\s
),并将每个字母转换为大写,生成未触及的第一种形式,并将第二种和第三种形式转换为第一种形式
编辑:我不认为jQuery验证插件提供了某种规范化回调。但是,您可以使用or事件并检查字段是否为,如果为,则对其进行规范化:
$("#txtPostalCode").blur(function () {
$this = $(this);
$this.validate();
if ($this.valid()) {
$this.val(normalizePostalCode($this.val()));
}
});
尝试以下操作:
function normalizePostalCode(s) {
return s.replace(/(.{3}) ?(.{3})/, '$1 $2').toUpperCase();
}
var s = "h0h0h0";
s = normalizePostalCode(s); // H0H 0H0
它将删除空白(\s
),并将每个字母转换为大写,生成未触及的第一种形式,并将第二种和第三种形式转换为第一种形式
编辑:我不认为jQuery验证插件提供了某种规范化回调。但是,您可以使用or事件并检查字段是否为,如果为,则对其进行规范化:
$("#txtPostalCode").blur(function () {
$this = $(this);
$this.validate();
if ($this.valid()) {
$this.val(normalizePostalCode($this.val()));
}
});
根据Jquery验证网站,您可以为任何给定字段提供一种方法,以便在验证前对值进行规范化: ``` ```
但从外观上看,这只是一个字段一个字段的基础。根据Jquery验证网站,您可以为任何给定字段提供一种方法,以便在验证之前对值进行规范化: ``` ```
但从外观上看,这只是一个字段一个字段的基础。我添加了自己的空白方法
$(document).ready(function($) {
jQuery.validator.addMethod("whitespace", function(value, element) {
return $.trim( value );
}, 'whitespace is not allowed');
});
// in rules
rules: {
street: {
whitespace: true,
email: true
},
}
我添加了自己的空白方法
$(document).ready(function($) {
jQuery.validator.addMethod("whitespace", function(value, element) {
return $.trim( value );
}, 'whitespace is not allowed');
});
// in rules
rules: {
street: {
whitespace: true,
email: true
},
}
你可以感谢我,但不要在以后的问题中添加它。你可以感谢我,但不要在以后的问题中添加它。我已编辑了我的问题。因此,您的回复告诉我们如何实现
normalizeInput
函数,而我想知道如何插入它。一开始我不清楚我需要什么,抱歉。太好了,谢谢。不过有两个问题。1.如果只要$this.validate()
就足够了,为什么要调用$this.validate()
?2.我更改了您的normalizePostalCode
,请参阅。你认为只需一次调用regex就可以编写它吗?1)根据我使用该插件的(有限)经验,我认为valid()。似乎情况不再如此:)。2) 您可以使用返回s.replace(/(.{3})(.{3})/,“$1$2').toUpperCase()代码>例如。酷,我认为在这种情况下它比仅仅操纵字符串要慢,但这仍然很酷。我已经编辑了我的问题。因此,您的回复告诉我们如何实现normalizeInput
函数,而我想知道如何插入它。一开始我不清楚我需要什么,抱歉。太好了,谢谢。不过有两个问题。1.如果只要$this.validate()
就足够了,为什么要调用$this.validate()
?2.我更改了您的normalizePostalCode
,请参阅。你认为只需一次调用regex就可以编写它吗?1)根据我使用该插件的(有限)经验,我认为valid()。似乎情况不再如此:)。2) 您可以使用返回s.replace(/(.{3})(.{3})/,“$1$2').toUpperCase()代码>例如.Cool,我认为在这种情况下它比仅仅操纵字符串慢,但这仍然很酷。如果要应用normalizer方法,请不要忘记包含additional-methods.min.js。如果要应用normalizer方法,请不要忘记包含additional-methods.min.js。