0

contenteditable が true に設定された div タグがあります。divで最後に入力された単語を見つけようとしています。

たとえば、入力しThis is a testてスペースを押すと、単語を取得できるようにしたいtest

このロジックを使用して、入力されている各単語をテストできるようにしたいと考えています (スペースが押された後)。

誰かがこれで私を助けることができれば、それは素晴らしいことです.

4

4 に答える 4

2

簡単な解決策は次のとおりです

var str = "This is a test "; // Content of the div
var lastWord = str.substr(str.trim().lastIndexOf(" ")+1);

古いブラウザーでは、trim に shim が必要になる場合があります。( .replace(/\s$/,""))

句読点を削除" Test!!! "するには、さらに次のような置換を行うことができます。

lastWord.replace(/[\W]/g,"");

\W必要に応じて、省略する文字をより具体的に定義したい場合があります。

スペースだけでなく句読点文字でもイベントハンドラーをトリガーする場合は、最後の置換は必要ありません。

于 2012-10-16T15:16:27.433 に答える
1

これが究極の方法です:

// listen to changes (do it any way you want...)
document.querySelectorAll('div')[0].addEventListener('input', function(e) {
    console.log( getLastWord(this.textContent) );
}, false);


function getLastWord(str){
   // strip punctuations
   str = str.replace(/[\.,-\/#!$%\^&\*;:{}=\_`~()]/g,' ');
   // get the last word
   return str.trim().split(' ').reverse()[0];
}

デモページ

于 2014-01-13T01:16:39.403 に答える
1

まず、いつコンテンツが編集されたかを知る必要があります。jQueryを使用して、それを行うことができます

​$("div").on("keyup", function(){ /* code */ });

次に、テキスト全体を取得して単語に分割する必要があります

var words = $(this).text().trim().split(' ');

words最後の単語を取得することは、配列の最後の要素を取得するのと同じくらい複雑です。

ここにコード全体があります

HTML

​&lt;div contenteditable="true">Add text here</div>​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​

JavaScript (jQuery を使用) </p>

$("div").on("keyup", function(){
    var words = $(this).text().trim().split(' '),
        lastWord = words[words.length - 1];
    console.log(lastWord);
});​​​​​​​

デモ

于 2012-10-16T15:29:28.290 に答える
0

これを試して、編集可能な div から最後の単語を取得できます。

HTML

<div id='edit' contenteditable='true' onkeypress="getLastWord(event,this)">
  </div>    

JS

 function getLastWord(event,element){
             var keyPressed = event.which;
             if(keyPressed == 32){ //Hits Space
                 var val = element.innerText.trim();
                 val = val.replace(/(\r\n|\n|\r)/gm," ");
                 var idx = val.lastIndexOf(' ');
                 var lastWord = val.substring(idx+1);
                 console.log("Last Word " + lastWord);
             }
        }

このリンクを試してくださいhttp://jsfiddle.net/vV2mN/18/

于 2012-10-16T15:45:47.613 に答える