我有ISBN查找。它必须是10个字符。我有一个自定义验证规则来检查。但是我的很多客户都在复制和粘贴,当他们这样做时,他们往往会在开始或结束时获得额外的空间。所以我想检查字符串之前或之后的空格并首先更新它。然后运行正则表达式。如果失败(不是字母数字或超过10位数),则显示错误消息。
这是我当前的自定义验证规则:
jQuery.validator.addMethod(
"isbn10rule",
function(value, element) {
var isValid = /^[a-zA-Z0-9]{10}$/.test(value);
return this.optional(element) || isValid;
},
"Must be exactly 10 characters and only letters and numbers"
);
我不想要针对范围限制值进行测试的答案。我甚至需要在验证运行之前更新值。
例如:String is" 0940087537&#34 ;;如果我尝试将其粘贴到字段中,它会立即显示"必须正好是10个字符,只有字母和数字"。但是如果它首先剥离了那个空间,那么它会看到只剩下10个字符。
答案 0 :(得分:1)
你可以像这样使用trim()
Javascript方法:
function(value, element) {
var trimmed_value = value.trim();
var isValid = /^[a-zA-Z0-9]{10}$/.test(trimmed_value);
return this.optional(element) || isValid;
}
trim()
方法从字符串的两边删除空格。注意: trim()方法不会更改原始字符串。
希望这有帮助!
答案 1 :(得分:-1)
首先修剪该值并更新该元素。然后测试相同的值。
function(value, element) {
var trimmed_value = value.trim();
$(element).val(trimmed_value);
var isValid = /^[a-zA-Z0-9]{10}$/.test(trimmed_value);
return this.optional(element) || isValid;
}