2012-02-27 14 views
2
$(document).ready(function() { 

    $("[class^='count[']").each(function() { 

     var elClass = $(this).attr('class'); 
     var minWords = 0; 
     var maxWords = 0; 
     var countControl = elClass.substring((elClass.indexOf('['))+1, elClass.lastIndexOf(']')).split(','); 

     if(countControl.length > 1) { 

      minWords = countControl[0]; 
      maxWords = countControl[1]; 

     } 

     else { maxWords = countControl[0]; } 



     $(this).after('<div class="wordCount"><strong>0</strong> words so far</div>'); 

      if(minWords > 0) { 
           $(this).siblings('.wordCount').addClass('error'); 
          } 

     $(this).bind('keyup click blur focus change paste', function() { 

      var numWords = jQuery.trim($(this).val()).split(' ').length; 
       if($(this).val() === '') { 
         numWords = 0; 
        } 

     $(this).siblings('.wordCount').children('strong').text(numWords); 
      if(numWords < minWords || (numWords > maxWords && maxWords != 0)) { 
       $(this).siblings('.wordCount').addClass('error'); 
       } 
       else { 
        $(this).siblings('.wordCount').removeClass('error'); 
       } 

     }); 
    }); 
}); 

このスクリプトは、基本的には、単語の間にスペースを数えますが、余分なスペースが追加された場合には、ダブルスペースを単語として数えないようにするにはどうすればよいですか?

http://blog.themeforest.net/tutorials/creating-a-jquery-word-counter/

答えて

9

.split()も正規表現を受け付けます。試してみよう:

var numWords = jQuery.trim($(this).val()).split(/\s+/).length; 
3

は、スクリプトを実行し、その後正規表現で、すべての二重のスペースを削除して...あまりにも新しい言葉としてそれらを数えます。見つけられる二重スペースがない場合、それらを数えることはできません。

これは、C#での例ですが、JavaScriptで同じアカウント:How do I replace multiple spaces with a single space in C#?

関連する問題