我要讓像谷歌Wave一個聊天程序,顯示了在實時輸入。目前我只使用textarea。我只想知道用戶對textarea所做的更改(無論是一個字符還是粘貼文本),而不必在整個textarea上執行diff。我是沿着使用setTimeout
與oninput
事件的線條的東西,但我認爲這隻能給我和「後的文本」,「文本之前」。有任何想法嗎?如何從textarea獲取新輸入的文本?
1
A
回答
1
這種類型的功能被使用消息配料類型的設置最有可能實現的。
這裏是它是如何打破:
附加事件處理程序的文本區域來跟蹤人物等級(認爲,的keydown,按鍵,KEYUP,等..)修改和記錄這些成消息緩衝區
您需要爲「endchange」,「onpaste」等「最終事務」類型事件提供備份。這些事件用於檢查您的狀態並準備好運行「完全重新同步」(例如,通知其它客戶做一個全面的「拉」),如果你認爲你有一個不匹配
上的間隔
(每0.3 - 1秒),則清空消息緩衝區和重新發送消息到其他客戶端(直接連接[WebSockets的?],或經由服務器間接)
當客戶端接收消息,他們按照他們收到的相同順序處理它們[希望]以相同的狀態,錯誤或衝突回退結束:信號完全同步
在完全同步客戶端上應重新拉動完整狀態試圖將焦點/胡蘿蔔接近最後的位置儘可能
在一個側面說明:這是大大與在那裏你可以做你的區域清潔全互換而不影響我的「地區」的概念簡化...
希望這有助於-ck
1
你會想看看key
事件:,keypressed
,keyup
但你還需要考慮粘貼的文本 - 這可能沒有一個按鍵。
一種策略,以簡化事件HANDELING,將有一個「提交」按鈕。然後你會知道用戶何時完成他們的陳述。
1
跟蹤價值使用setInterval將文本區域與自身進行比較,以查看它是否發生更改。這適用於粘貼,正常按鍵等
例子:
var lastVal = $("#myTextInput").val();
setInverval(function(){
if($("#myTextInput").val() != lastVal) {
lastVal = $("#myTextInput").val();
// the text changed, do something with the current value (AJAX, whatever)
}
}, 300);
相關問題
- 1. 如何從UITextField獲取文本輸入?
- 2. 從textarea獲取文本
- 3. 從textarea獲取文本jquery
- 4. 如何從Backbone.js獲取新的輸入文本
- 5. 從textarea獲取值並用文本創建一個新的textarea
- 6. 如何從我們使用硒輸入的textarea中獲取文本
- 7. 如何獲取粘貼的textarea輸入框的新值?
- 8. 如何在反應原生文本輸入中獲取新輸入的文本?
- 9. 如何從文本框中獲取輸入並更改文本
- 10. 無法從jQuery輸入文本中獲取輸入文本
- 11. 如何獲取TextEntry輸入文本tkinter
- 12. 如何從語音輸入IME獲取/編輯文本輸出
- 13. 如何在提交後從TextArea獲取輸入數據
- 14. 如何獲取TextChanged事件中新輸入的文本?
- 15. 如何在文本框中獲取新的輸入值
- 16. 如何從JavaScript更新輸入文本?
- 17. 無法使用Angular獲取HTML textarea輸入文本
- 18. 如何從textarea獲取值
- 19. html - 從textarea獲取包裝文本
- 20. 從插入位置提取文本textarea
- 21. 從輸入文本獲取jQuery var
- 22. 從MessageDigest獲取輸入文本
- 23. 從文本區域獲取輸入
- 24. JOptionPane和從輸入中獲取文本
- 25. 從文本框獲取輸入值
- 26. 從瀏覽器控件vb.net獲取textarea命名輸入中的文本
- 27. 如何使用Jquery從動態創建的textarea獲取文本?
- 28. 如何從JavaScript中的文本輸入字段獲取值?
- 29. 如何從終端獲取python腳本的輸入文件?
- 30. 如何從Android中的文本獲取輸入多個時間?
你可能要花費一些時間檢查出meteor.js http://meteor.com這是一個javascript框架編寫實時應用程序 - 如聊天。 –