JQueryvalidation – 修剪空格

我正在使用我的rails应用程序中的jquery-validation-bootstrap-tooltip插件进行jqueryvalidation 。 我想修剪空格,以便删除开头和结尾的空格,并且不计入validation,如果前面有空格,则删除字符串中间的任何空格。 我想确保像" funny cat""funny cat"这样的东西只会被validation并保存为“有趣的猫”。

这是我的代码:

 $('#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 } } }); 

我发现这篇文章是相关的,但无法弄清楚如何将它应用到我的案例中。

我想我可能必须制作自己的方法,在评估输入时忽略额外的空格,并before save使用before save以确保before save之前删除这些空格。 我可以使用一些帮助代码。

http://jsfiddle.net/QfKk7/

回答:

我使用下面的答案来创建一个新方法:

 $.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。

首先用一个空格替换多个空格,然后修剪字符串。

 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); } }