2013-07-09 66 views
4

我有一个文本框,并且我想要计算出现''的次数。如何计算字符串中使用jquery的字符出现次数

如果文本框已经有'。'那么用户不能输入'。'。从他的键盘

这里是我的代码:

$('.txt').keyup(function() { 
      var ele = $(this).val(); 
      var contains = (ele.indexOf('.') > -1); 
      if (contains) { 
       var count = $(this).val().match(/./g); 
       if (count > 1) {      
        var cont = $(this).val(); 
        var str = $(this).val().length; 

        $(this).val(cont.substring(0, str)); 
       }     
      } 

     }); 

$(本).VAL()的比赛(/./ G)给我发生的指数。 ''但我想要统计它的出现次数。

回答

3

你的正则表达式需要改变。 “”在正则表达式意味着一切。你需要逃避“。”。大概就是这个样子......

$(this).val().match(/\./g); 
0

这正是你想要的.. :) Demo here

逃离字符,只是指望它。

的Javascript:

$('.txt').keyup(function() { 
      var ele = $(this).val(); 

          alert(ele.match(/\./g).length); 

     }); 

HTML

<textarea id="txt"></textarea> 
7

您可以使用下面的代码找到时间的字符数 “”发生在一个字符串中。

var regex = new RegExp(/\./g) 
    var count = "This is some text .".match(regex).length; 
0

试试下面对特箱的onkeypress事件或onkeyup事件的JavaScript functinon

,并呼吁像这样onkeypress = "return (event,'txtid',9,2)" beforelength是前 '' '。'之后允许多少个号码和afterLength。号码长度

function isNumberKey(event, obj, beforeLength, afterLength) { 
    var keyCode1 = event.keyCode; 

    var keyCode = 0; 
    if (keyCode1 == 0) 
     keyCode = event.which; 
    else { 
     keyCode = keyCode1; 
    } 

    // alert(keyCode); 
    // alert(keyCode1); 

    if ((keyCode >= 48 && keyCode <= 57) || keyCode == 46 || keyCode == 13 || keyCode == 27 || keyCode == 127) { 
     var text = document.getElementById(obj).value; 
     if (keyCode == 46 && keyCode1 == 0) { 
      if (text.toString().indexOf(".") != -1) { 
       return false; 
      } 
     } 
     if (keyCode == 46) { 
      if (text.toString().indexOf(".") != -1) { 
       return false; 
      } 
     } 

     //  if (!/^\d{0,10}(?:\.\d{0,2})?$/.test(text)) { 
     //   return false; 
     //  } else { 
     //  } 
     var splitText = text.split('.'); 
     if (splitText[0].length >= beforeLength) { 
      if (keyCode == 46 && text.toString().indexOf(".") == -1) { 
       return true; 
      } else if (text.toString().indexOf(".") != -1) { 
       return true; 
      } 
      return false; 
     } 
     //  if (splitText.length > 1 && splitText[1].length == afterLength) { 
     //   return false; 
     //  } 
    } 
    else { 
     return GetDefault(event); 
    } 
    return true; 
} 

function GetDefault(event) { 
    var keyCode = event.keyCode; 
    if (keyCode == 0) 
     keyCode = event.which; 

    if (keyCode == 8 || keyCode == 9 || keyCode == 35 || keyCode == 36 || keyCode == 37 || keyCode == 38 || keyCode == 39 || keyCode == 40 || keyCode == 46 || keyCode == 118) { 
     return true; 
    } 
    return false; 
} 
0

如果你想以提醒用户(或其他先进的东西),这就是为什么你需要的数量,那么你需要增加长度:

$('.txt').keyup(function() { 
    var ele = $(this).val(); 
    var i = ele.indexOf('.'); 
    if (i > -1) { 
     var c = ele.match(/\./g).length); 
     // ... 
    } 
}); 

如果你只是想删除点那么你可以使用:

$('.txt').keyup(function() { 
    $(this).val($(this).val().replace('.', '')); 
}); 
1

你可以试试这个:

$('.txt').keyup(function() { 
    var str = this.value; 
    var a = str.split('.'); 
    if (a.length > 2) { 
     this.value = a.slice(0, 2).join('.');//removes 2nd dot and the string following it 
     //a[0] +='.'; this.value = a.join('');//only removes redundant dots (alternative) 
    } 
}); 

这里发生的次数是a.length-1

jsfiddle

+0

我怎么会去让'1.1.2016' W/O有两个时期去除,但不允许'1.1。 .2016'还是这样的重复期? – Abela

0

我发现我的方式....

var count = 0; 
$('.txt').blur(function() 
{ 
    var t = $(this).val(); 
    if (t.indexOf('.') >= 0) 
    { 
     var j = t.split('.'); 
     count = j.length - 1;      
    } 
    else 
    { 
     count = -1; 
    } 
} 
相关问题