我是如此接近。
我的輸入是一個數字輸入,帶有一個 increment=".000001" 并隱藏了旋轉按鈕。
在我的指令中,我有:
@HostListener('paste', ['$event'])
onPaste(event: ClipboardEvent) {
console.log('You have pasted successfully');
const input = event.target as HTMLInputElement;
let clipboardData = event.clipboardData;
let pastedText = clipboardData.getData('text').toUpperCase();
console.log("pastedText: " pastedText);
let trimmedText = pastedText.replace(/\s|[A-Z_]|[#$%,^&*()]/g, '');
console.log("trimmedText: " trimmedText);
(event.target as HTMLInputElement).value = trimmedText;
}
如果我粘貼,用滑鼠右鍵單擊或 ctrl v 粘貼,字串:sd87634ee5jkbhsdf74bhgf.34iuhsdef76
event.target.value = 修剪文本;console.log("trimmedText:" trimmedText); trimmedText 等于 87634574.3476,所以初始字串被完美地清理了..
但是當函式完成時,它會附加一個更混亂的版本 87634574.347687634e5743476
這里發生了什么?
uj5u.com熱心網友回復:
你需要在你的函式頂部添加這個:
event.preventDefault();
在設定輸入值后實際停止執行本機粘貼事件。
現在你只是設定一個值87634574.3476,然后粘貼正在執行并附加粘貼的值87634e5743476,這是你的粘貼值,沒有無效的數字字符(是的,一個 e 是一個有效的數字字符)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/452440.html
