Jquery 删除空白并在验证规则之前更新值
我有一个ISBN查询。它必须是10个字符。我有一个自定义的验证规则来检查这一点。但我的很多客户都在复制和粘贴,当他们这样做时,他们往往会在开始或结束时获得额外的空间。所以我想检查字符串前后的空格,并首先更新它。然后运行正则表达式。如果失败(不是字母数字或超过10位数),则显示错误消息 以下是我当前的自定义验证规则:Jquery 删除空白并在验证规则之前更新值,jquery,regex,validation,isbn,Jquery,Regex,Validation,Isbn,我有一个ISBN查询。它必须是10个字符。我有一个自定义的验证规则来检查这一点。但我的很多客户都在复制和粘贴,当他们这样做时,他们往往会在开始或结束时获得额外的空间。所以我想检查字符串前后的空格,并首先更新它。然后运行正则表达式。如果失败(不是字母数字或超过10位数),则显示错误消息 以下是我当前的自定义验证规则: jQuery.validator.addMethod( "isbn10rule", function(value, element) { var isValid = /^[a
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"
);
我不希望答案是针对范围限制值的测试。我需要在验证运行之前更新该值。
例如:字符串为“0940087537”;如果我尝试将其粘贴到字段中,它会立即显示“必须正好是10个字符,并且只有字母和数字”。但如果它先去掉那个空格,那么它会看到只剩下10个字符。您可以使用如下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()方法不会更改原始字符串
希望这有帮助 首先修剪值并更新元素。然后测试相同的值
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;
}
在运行正则表达式之前修剪输入:
/^[a-zA-Z0-9]{10}$/.test(value.Trim())代码>@WiktorStribiżew我如何投票否决你?你显然没有读过这个问题。我不仅仅是想删减空白。我知道怎么做。我想在元素运行正则表达式之前自动更新它…而不仅仅是在修剪后的值上运行正则表达式。然后修剪并更新元素值。就这么简单。感谢Saumya,但正如你所说……修剪方法不会改变原始字符串。我希望在验证运行之前更新原始字符串。您也可以在粘贴数据之前访问数据。使用事件中的剪贴板API。你要否决我,因为我甚至不知道你可以绑定粘贴事件?多年来一直这样做,从未听说过。我认为它不值得投否决票。