我有一个验证字段值长度的函数,
function validateName(name) {
if(name.val().length < 5) {
}
}
我还想检查是否存在空格。我试过这个,但没有奏效:
function validateName(name) {
if(name.val().length < 5 && name.val(" ") < 0) {
}
}
我有一个验证字段值长度的函数,
function validateName(name) {
if(name.val().length < 5) {
}
}
我还想检查是否存在空格。我试过这个,但没有奏效:
function validateName(name) {
if(name.val().length < 5 && name.val(" ") < 0) {
}
}
上面代码中的问题是,$.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 对象。