获得最后输入的字从CONTENTEDITABLE DIV(Getting the last ente

2019-09-24 05:06发布

我有CONTENTEDITABLE设置为true的div标签。 我试图找出在div最后输入的字。

例如,如果我键入This is a test ,我打了一个空间,我希望能够得到词test

我希望能够利用这个逻辑,这样我可以测试每个字被输入(在按下空格后)。

这将是巨大的,如果有人可以帮助我。

Answer 1:

一个简单的解决方案是以下

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

修剪可能需要为旧版浏览器垫片。 ( .replace(/\s$/,"")

要去除标点符号,如" Test!!! "你还可以做一个像替换以下:

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

你可能想要做的字符的更具体的定义省略比\W ,根据您的需要。

如果你也想触发事件处理程序上的标点符号不仅在空间,最后取而代之的是没有必要的。



Answer 2:

这是最终的方式:

// 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];
}

DEMO PAGE



Answer 3:

首先必须在内容编辑时就知道了。 使用jQuery,这是可以做到的

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

然后,你就必须得到整个文本,并将其拆分成词

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

并获得了最后一个字是获得的最后一个元素一样复杂words阵列。

这里是整个代码

HTML

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

JavaScript的(使用jQuery)

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

演示



Answer 4:

你可以试试这个从编辑的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/



文章来源: Getting the last entered word from a contentEditable div