2011-03-07 47 views

回答

2

使用keyup函數來觸發。拆分所有字符串並檢查它。

[更新]:更多的改進版

<script> 

var totalcount=0; 

$(function(){ 

    $('#text').keyup(

     function(){ 

       var arr = $(this).val().split(" "); 

       var matchitems = count('hello', arr); 

       //console.log(matchitems); 

       if(matchitems > totalcount){ 
       alert('hello'); 
       totalcount = matchitems; 
       } 
       if(matchitems < totalcount) 
       { 
       totalcount = matchitems; 
       } 

     } 
    ) 

}) 

function count(value, array) 
{ 
    var j=0; 

    for(var i=0;i<array.length;i++) 
    { 

     if(array[i] == "hello"){ 
      j++;  
     } 
    } 
    return j; 
} 

</script> 

<input type="text" id="text" /> 
}) 

</script> 

<input type="text" id="text" /> 
+0

謝謝,這很好! – Chaddeus 2011-03-07 06:32:50

1

使用keyup像@experimentX提到的是你要去B中的路/ C,則你會知道你的用戶已經輸入了價值。但是,運行for循環對於每一個鍵盤事件都是非常昂貴的。相反,因爲你知道你想已經是值,您可以使用預設regexp搜索你的價值:

<input type="text" id="text" value="" /> 

<script> 
    $(function() { 
     var $input = $('#text'); 
     $input.keyup(function (e) { 
      var regexp = /\[text\:/i, 
       val = $(this).val(); 
      if (regexp.test(val)) { 
       console.log('i have it: ', val); 
      } 
     }); 
    }); 
</script> 

這裏是你如何編寫實際regexp一對夫婦的其他方案。

  • 你希望字符串是在輸入的開始:var regexp = /^\[text\:/i;
  • 大廈上面的一個,但合併文本前面的空白的任何量你真的想:var regexp = /^\s+?\[text\:/i;
+0

確定你的概念也是令人印象深刻的,但是你有一個錯誤...(eveytime它將寫入console.log中進行單個匹配)。看到我的imrpoved版本。你不能找到沒有匹配的東西,並改進你的?然而+1對於reqex概念 – 2011-03-07 06:39:28

+0

是的,我也試過這個代碼。如果沒有匹配代碼,即使在第一場比賽中已經採取了動作之後,它也會匹配每個密碼。 – Chaddeus 2011-03-07 23:49:51

+0

雖然,我能夠採取該正則表達式並將其用於其他目的。謝謝! – Chaddeus 2011-03-07 23:50:38