JQuery计算输入的内容

时间:2014-04-08 16:34:41

标签: javascript jquery html function keyup

您好,我有一个系统可以计算班级中的文本框数量#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";  

这导致所有文本框都被计算在内,无论价值如何。 谢谢你提前。

3 个答案:

答案 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是/iL之一。)

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

  • OR'd系列条件:val === "/" || val === "i" || val === "L"。这是明确的,但是多余的,并且在大约三个选项之后不再清晰。但是,值得注意的是,这可能是最快的选择 - 如果您必须快速连续测试10k字符串,这可能很重要。

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

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

答案 2 :(得分:1)

尝试:return this.value.match(/[\/li]/) !== null