2013-07-09 68 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; 
    } 
} 
相關問題