JQuery验证 - 修剪空格

时间:2015-12-11 14:51:09

标签: javascript jquery jquery-validate

我在我的rails应用中使用jquery validationjquery-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确保在保存之前删除这些空格。我可以使用一些帮助代码。

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。

1 个答案:

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