3

tinymce エディターの検証に取り組んでいます。現時点では、文字数で検証していますが、これは記事の本文であるはずなので、単語数のようなものに変えたいと思います。したがって、基本的には、ほんの数語の記事を提出することはできません。

現時点で私はこれを持っています

setup : function(ed) {
     ed.onInit.add(function(ed, evt) {
     tinymce.dom.Event.add(ed.getBody(), 'focusout', function(e, t) {
             var con = tinyMCE.activeEditor.getContent();
             var len = con.replace(/(<([^>]+)>)/ig,"").length;
             if(len <=100){
                $('.storyError').text('An artical has to have at least 100 words!');
             }else{
                    $('.storyError').text(' ');
             }
          });
      });
  }

私の初期化の後、これは機能しますが、文字の代わりに単語を数えたいだけです。いくつかの助けをいただければ幸いです!

4

5 に答える 5

3

ここで、セレクターを置き換えて、必要に応じてテキストを取得します。

    var count = 0;
    function fn(){
        count++;
        return ' ';
    }
    var x= $('textarea').text().trim();
    console.log(x);
    x= x.replace(/[\s]+/ig,fn);
    //x is now filtered out of extra spaces too !
    var words = count+1;
    count = 0;
    console.log(words);

JSFiddle

あなたの場合は次のようになります:

    var count = 0;
    function fn(){
        count++;
        return ' ';
    }

    setup : function(ed) {
             ed.onInit.add(function(ed, evt) {
             tinymce.dom.Event.add(ed.getBody(), 'focusout', function(e, t) {
             var con = tinyMCE.activeEditor.getContent().trim();
             con = con.replace(/[\s]+/ig,fn);
             //var len = con.replace(/(<([^>]+)>)/ig,"").length;
             var words = count+1;
             count = 0;
             if(words <=100){
                $('.storyError').text('An artical has to have at least 100 words!');
             }else{
                $('.storyError').text(' ');
             }

          });
      });
    }

または、これを使用してすべてを 1 行にするには (ただし、余分なスペースは除外されません):

var words = con.trim().split(/\s+/).length;
于 2013-06-15T19:39:03.777 に答える
1

とても簡単です:

  1. DOM にダミー要素を作成します。
  2. この要素にデータを保持させます。
  3. Node.textContentまたはを使用Node.innerTextして、データからテキスト コンテンツを抽出します (タグなどなし)。
  4. テキストを分割し、単語を数えます。

作業例:

var data = '<p>First paragraph <strong>with strong</strong></p>',
    dummy = document.createElement( 'div' );

dummy.innerHTML = data;

console.log( ( dummy.textContent || dummy.innerText ).split( /\s+/ ).length );
>>> 4 // no "strong", "p" etc, just text

MDN のNode.textContentの詳細。

于 2013-06-15T19:41:57.237 に答える