我正在嘗試創建一些寫入工具,它會針對我的API檢查標記的某些單詞。這個想法是在用戶仍然在鍵盤上打字或完成打字時(在匹配的單詞下繪製紅色下劃線),即時標記單詞。通過索引位置替換單詞
現在到了開始我用下一個函數來確定何時用戶停止輸入1-2秒(這是抓住文本,並將其發送給我的API合適的時機):
debounce: function (func, wait, immediate) {
var timeout;
return function() {
var context = this, args = arguments;
var later = function() {
timeout = null;
if (!immediate) func.apply(context, args);
};
var callNow = immediate && !timeout;
clearTimeout(timeout);
timeout = setTimeout(later, wait);
if (callNow) func.apply(context, args);
};
}
,並使用它像這樣:
$(this).on('keyup', debounce(function() {
check_words($(this).html());
}, 1000));
所以當我當前sentense(用戶仍然可以繼續打字)我用check_words功能AJAX調用發送給我的API來檢查哪些話應該是標記。
API返回的JSON迴應是這樣的: (例如一句:「你好我的名字是鮑勃‘):
{
"markup": [{
"fromPos": 7,
"toPos": 8,
"word": "my"
}, {
"fromPos": 15,
"toPos": 16,
"word": "is"
}
}
所以這意味着2個字應該是標記(’我」和「是」),我也得到了這個詞的索引位置,問題是我找不到解決方案/方法如何用元素索引位置替換元素上的單詞?
任何想法哪些JS功能可以幫助我實現這一目標?
既然你已經開始和單詞的末尾位置,你嘗試這種解決方案https://stackoverflow.com/a/2236257/1593188 – Erfan
但我怎麼能執行元件本身對這個解決方案? (因爲我不能使用源的內容,因爲從那個時候它可能會再次發生變化 - 用戶也許仍然打字) – user2678018
天真的方法是開始和結束位置與「詞」之間的內容從Ajax調用進行比較,如果它們是相似的替換否則根據當前文本再次調用ajax調用。 – Erfan