剥离空白并在验证规则之前更新值

时间:2016-11-15 15:19:20

标签: jquery regex validation isbn

我有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个字符。

2 个答案:

答案 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;
}