呼啦一陣風
2023-11-12 15:02:00
我遇到以下問題:加載特定 jQuery 庫后,如果單擊數字輸入箭頭,輸入值會不斷增加(或減少),直到焦點移到輸入元素之外。將事件綁定input到元素顯示它不斷觸發,這讓我相信某些代碼一直element.value在循環中設置。但那并沒有發生。我已將問題歸結為調用event.preventDefault()一個mouseup活動。看:document.body.addEventListener('mouseup', (e) => { e.preventDefault();});<input type="number">為什么會出現這種情況?
2 回答

子衿沉夜
TA貢獻1828條經驗 獲得超3個贊
我很難通過搜索導致這些無限增加的輸入的原因來查找信息。
只有在自己找到原因之后,我才發現了一個類似的錯誤,該錯誤是在阻止默認值時發生的mousemove
。雖然,這樣的事情似乎不會再發生了。
看起來這是一個 Chrome(和 Edge)錯誤。實際上是默認行為,這在他所說的方式中是有意義的。我本人未能在任何地方找到這種標準行為的記錄。解決該問題的一種方法是停止將事件冒泡到文檔,
document.querySelector('input').addEventListener('mouseup',?(e)?=>?{ ????e.stopPropagation(); });
另一個是,沒有阻止默認行為。

白衣染霜花
TA貢獻1796條經驗 獲得超10個贊
以下問題與jQuery無關。問題是代碼正在做你想要它做的事情。代碼中<input type="number" />
有2個事件。第一個是“mousedown”,第二個是“mouseup”。
你正在做的是cancelling the 2nd part, ie mouseup
,如果你按下mousedown
鼠標cancel
,那么數字將:
如果你按向上箭頭繼續增加
如果你按下箭頭繼續減少
唯一令人驚訝的是,如果您編寫添加事件的代碼而不是添加事件input
,那么這將具有完美的意義body
,但無論如何似乎browser by default is increasing or decreasing number -- based on event-bubbling to body
。
注意:下面復制了這個問題,但沒有添加 jQuery!
document.body.addEventListener('mouseup',?(e)?=>?{ ??e.preventDefault(); });
<input?type="number">
添加回答
舉報
0/150
提交
取消