JQuery 验证 - trim 空格

JQuery Validation - trim whitespaces

我在 rails 应用程序中使用 jquery validation with the jquery-validation-bootstrap-tooltip plugin。我想要 trim 空格,以便删除开头和结尾的空格并且不计入验证,并且如果前面有空格,则删除字符串中间的任何空格。我想确保像 " funny cat""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 来确保在保存之前删除这些空格。我可以使用一些帮助代码。

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 压缩。

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

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