我有一个函数可以验证字段值的长度,
function validateName(name) {
if(name.val().length < 5) {
}
}
我还想检查是否存在空白区域。 我试过这个,但它不起作用:
function validateName(name) {
if(name.val().length < 5 && name.val(" ") < 0) {
}
}
答案 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对象。