验证表格 - 没有空格

时间:2012-11-28 16:37:49

标签: javascript jquery

我有一个函数可以验证字段值的长度,

function validateName(name) {
  if(name.val().length < 5) {
  }
}

我还想检查是否存在空白区域。 我试过这个,但它不起作用:

function validateName(name) {
  if(name.val().length < 5 && name.val(" ") < 0) {
  }
}

1 个答案:

答案 0 :(得分:1)

上面代码中的问题是$.fn.val根据它作为输入接收的参数改变行为;具体来说,它是一个 getter ,当它没有参数时执行,而 setter 当它用一个参数执行时。 所以这一行:

name.val(" ")

不会检查值中是否存在空格,而是将值设置为单个空格。

有许多不同的方法可以检查字符串是否至少包含空格;在这里,我将使用String#indexOf,以便validateName函数可以写为:

function validateName(name) {
  var val = name.val();
  if (val && val.length < 5 && val.indexOf(" ") < 0) {
    // valid!
  }
}

更具表现力的方法是使用String#includes,但浏览器也不太广泛支持。

function validateName(name) {
  var val = name.val();
  if (val && val.length < 5 && val.indexOf(" ") < 0) {
    console.log("valid", val);
  } else {
    console.log("invalid", val);
  }
}

validateName($('<input value="b" />'));
validateName($('<input value="br" />'));
validateName($('<input value="bru" />'));
validateName($('<input value="brun" />'));
validateName($('<input value="bruno" />'));
validateName($('<input value="b ru" />'));
validateName($('<input />'));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

另外,作为一般建议,我不会将验证逻辑与jQuery混淆;也就是说,validateName最好接受一个普通字符串作为输入,而不是表示输入字段的jQuery对象。