下面的代碼工作正常,但如果我粘貼的字符串超過10個字符,它應該只粘貼前10個字符。目前它不這樣做,我如何防止超過10個字符被粘貼?Textarea charCount - 防止用戶粘貼
回答
您無法從瀏覽器中瀏覽剪貼板緩衝區,所以您唯一的選擇是將其限制爲10個字符,就像您當前所做的那樣。使用maxlength =「10」屬性,而不是JavaScript字符計數事情。
<textarea maxlength="10"></textarea>
多數民衆贊成我的意思是說,我知道你不能偷看到剪貼板 –
@AbuHamzah啊好的,那麼maxlength屬性應該爲你工作。 –
這不是跨瀏覽器兼容的。 –
如前所述,<textarea maxlength="10">
將工作的情況下少量的 - 但不是所有。
很難確定如何防止用戶(例如Firefox中)輸入文本區域,選擇瀏覽器菜單Edit
,然後單擊Paste
。我對如何防止這種情況感到不知所措。您可以檢查keydown事件以防止ctrl
+ v
。您可以禁用上下文菜單以禁止右鍵單擊文本區域(儘管惡意用戶可以編輯前端JavaScript,然後重新啓用此功能)。
總之,沒有通用的方法來阻止用戶以正確的方式粘貼。
但是,你可以破解一個解決方案(總是我最喜歡的,當它似乎沒有辦法繼續你真正想要的東西)。我將要提出的這種方法取決於您運行多少個定時器。如果您有多個動畫定時器,谷歌建議您嘗試將它們全部放入其他定時器單元中。如果是這種情況,請重構您的定時器。
實施全局計時器。實現一個基於該定時器運行25ms的函數。緩存textarea的內容。看看這些內容是否已經改變。
textarea的
<textarea id="maintextarea"></textarea>
腳本
/*init*/
var globalTimer = new Date();
var cachedText = document.getElementById("maintextarea").value;
var iterationCount = 0;
function cacheText() {
cachedText = document.getElementById("maintextarea").value;
}
function upDateTimer() {
globalTimer = new Date();
var timerTimeout = setTimeout('upDateTimer()', 5);
timeBasedOperations();
}
upDateTimer();
function timeBasedOperations() {
iterationCount++;//this will allow timing to occur
//TODO: Add in other timers calls based on global timer
if (iterationCount % 5) {//every fifth iteration (hence 25ms)
checkTextArea();
}
}
function checkTextArea() {
var currentText = document.getElementById("maintextarea").value;
var textArea = document.getElementById("maintextarea");
if (currentText.length > cachedText.length) {
//TODO: Add additional logic for catching a paste or text change
textArea.value = currentText.substr(0, 10);
}
cacheText();
}
我覺得雖然這實現了一個計時器,這是一個非常實用的解決方案。它也適用於工作(測試)。
:)
- 1. CKEditor - 防止用戶粘貼圖像
- 2. 防止用戶粘貼到字段中
- 3. 使用jquery防止複製粘貼
- 4. 如何防止用戶在wordpress中複製並粘貼網址
- 5. 爲什麼要防止粘貼密碼?
- 6. 如何防止粘貼到多列中?
- 7. 網頁如何防止粘貼事件?
- 8. 如何防止或粘貼Vim的宏
- 9. 如何防止tinyMCE的粘貼事件?
- 10. TInyMCE - 防止粘貼破碎的HTML?
- 11. 防止複製+粘貼文本區爲()
- 12. 使用jquery防止複製和粘貼到URL使用jquery
- 13. HTML執行粘貼到textarea
- 14. 使用拖放到textarea禁用粘貼
- 15. 防止用戶點擊Enter除了Textarea
- 16. 限制用戶在textarea中粘貼max(40)個字符
- 17. 防止剪切複製粘貼上使用JQuery
- 18. 的JavaScript抓粘貼事件中的textarea
- 19. 粘貼到textarea時保留換行符
- 20. 爲新行分割粘貼文本(textarea)
- 21. TextArea Extjs 4.1上的事件「粘貼」
- 22. 如何防止輸入和粘貼cleditor中的單引號和雙引號?
- 23. 如何在粘貼時防止頁面滾動?
- 24. Android - 防止edittext複製/粘貼和雙擊選擇所有
- 25. 防止在excel中複製副本粘貼
- 26. 如何防止粘貼到輸入的腳本注入
- 27. 如何防止鍵盤顯示,但允許粘貼UITextView
- 28. 防止從PHP頁面提取,下載或複製/粘貼
- 29. vim在粘貼上打開我的摺疊。如何防止呢?
- 30. 如何防止複製,粘貼,並從所確定的目錄
爲什麼downvote沒有提及任何理由?即使對某些人來說這是一個微不足道的問題,但它確實遵守了計算器的規則。 – gopi1410
有些人喜歡這樣做..誰在乎 –