我在我的rails应用中使用jquery validation和jquery-validation-bootstrap-tooltip plugin。我想修剪空格,以便删除开头和结尾的空格,并且不计入验证,如果前面有空格,也会删除字符串中间的任何空格。我想确保" funny cat"
或"funny cat"
之类的内容只会被验证并保存为"有趣的猫"。
这是我的代码:
$('#custom-tag').validate({
onkeyup: function (element, event) {
if (event.which === 9 && this.elementValue(element) === "") {
return;
} else if (this.elementValue(element).length < 3 ) {
return;
} else {
this.element(element);
}
},
rules: {
tag: {
maxlength: 25,
minlength: 2
}
},
tooltip_options: {
tag: { placement: 'right', animation: false }
}
});
我发现这个post是相关的,但无法弄清楚如何将其应用到我的案例中。
我认为在评估输入时我可能必须创建自己的方法忽略额外的空格,并使用before save
确保在保存之前删除这些空格。我可以使用一些帮助代码。
解答:
我使用下面的答案创建了一个新方法:
$.validator.addMethod(
"maxLen",
function (value, element, param) {
var value = this.elementValue(element).replace(/\s+/g, ' ').trim();
if (value.length > param) {
return false;
} else {
return true;
}
}, "error message");
将g添加到正则表达式使其按照我想要的方式工作。现在我只需要在保存到数据库之前使用rails squish。
答案 0 :(得分:2)
首先用一个空格替换多个空格,然后修剪字符串。
function (element, event) {
var value = this.elementValue(element).replace(/\s+/g, ' ').trim();
if (event.which === 9 && value === "") {
return;
} else if (value.length < 3 ) {
return;
} else {
this.element(element);
}
}