您好,我有一个系统可以计算班级中的文本框数量#34;今天"有价值" /"。我希望这也可以计算它是否具有值" L"或" l"。我尝试过以下方法:
$('.today').keyup(function() {
var Presents = $('input:visible').filter(function(){
return this.value == "/";
});
$("#counter").html( "Present: " + Presents.length );
});
$( document ).ready(function() {
var Presents = $('input:visible').filter(function(){
return this.value == "/";
});
$("#counter").html( "Present: " + Presents.length );
});
我尝试过以下解决方案:
return this.value == "/", "l", "L";
这导致所有文本框都被计算在内,无论价值如何。 谢谢你提前。
答案 0 :(得分:3)
那是因为您的代码与return "L"
完全相同,这是真实的,因此会返回所有输入。
你的意思是:
return this.value == "/" || this.value == "l" || this.value == "L";
如果是这样,你也可以使用:
return this.value.length == 1 && "/lL".indexOf(this.value)+1;
可能看起来不太节省,但允许您更轻松地定义字符列表,以防您以后想要添加更多内容。
答案 1 :(得分:3)
这里最简短的答案可能是正则表达式:
return /^[\/lL]$/.test(this.value);
(这会检查一个char字符串,其中char是/
,i
或L
之一。)
更一般地说,您在这里的选择基本上是:
OR'd系列条件:val === "/" || val === "i" || val === "L"
。这是明确的,但是多余的,并且在大约三个选项之后不再清晰。但是,值得注意的是,这可能是最快的选择 - 如果您必须快速连续测试10k字符串,这可能很重要。
如上所述进行正则表达式检查。这可能是最简洁的代码,并且很容易在检查中添加更多字符或更复杂的模式,但它不太清晰。
数组包含。当您可以访问现代数组方法时,这是最简单的方法,例如return chars.any(function(c) { return c === val; })
。如果您的搜索字符串列表是在运行时确定的,或者只是在很长的时间内确定,这可能是最佳选择。
答案 2 :(得分:1)
尝试:return this.value.match(/[\/li]/) !== null