Javascript jQuery统计输入的内容

Javascript jQuery统计输入的内容,javascript,jquery,html,function,keyup,Javascript,Jquery,Html,Function,Keyup,我有一个系统,可以计算“Today”类中有多少文本框的值为“/”。如果它的值为“L”或“L”,我希望它也能计算。我尝试了以下方法: $('.today').keyup(function() { var Presents = $('input:visible').filter(function(){ return this.value == "/"; }); $("#counter").html( "Pres

我有一个系统,可以计算“Today”类中有多少文本框的值为“/”。如果它的值为“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";  

这导致所有文本框都被计数,不管值是多少。

这是因为您的代码与返回“L”相同,这是真实的,因此所有输入都被返回

你是说:

return this.value == "/" || this.value == "l" || this.value == "L";
如果是,您还可以使用:

return this.value.length == 1 && "/lL".indexOf(this.value)+1;

可能看起来没有多少节省,但允许您更轻松地定义字符列表,以备将来需要添加更多字符。

尝试:
返回此.value.match(/[\/li]/)!==null

这里最短的答案可能是regex:

return /^[\/lL]$/.test(this.value);
(这将检查单个字符字符串,其中字符是
/
i
L
之一)

更一般地说,您在这里的选择基本上是:

  • 一系列OR条件:
    val==”/“| | val==”i“| | val==”L”
    。这是清楚的,但多余的,并且在大约三个选项之后就不再清晰可辨了。然而,值得注意的是,这可能是最快的选择——如果您必须快速连续测试10k字符串,这可能很重要

  • 如上所述的正则表达式检查。这可能是最简洁的代码,可以很容易地在检查中添加更多字符或更复杂的模式,但不太清晰

  • 数组包含。当您可以访问现代数组方法时,这是最简单的,例如
    返回chars.any(函数(c){return c==val;})
    。如果搜索字符串列表是在运行时确定的,或者很长,这可能是最好的选择


我实际上要给你一个
+1
来使用
this.value
而不是构造一个完整的jQuery对象(
$(this.val()
)来获得一个基本属性。
.match
在失败时返回
null
,所以这会在未命中时抛出一个错误。呃,只需检查null,然后再检查相同的差异。更新参考以反映变更。