在编辑输入数字格式时保留撤消功能



>我正在尝试将输入数字格式化为两位小数 如 HTML5 数字输入 - 始终显示 2 位小数,但它会破坏撤消输入的可能性。

有没有办法在保持撤消的同时格式化数字?

请尝试以下操作:

<input value="1.11" id="i"
onchange="this.value=parseFloat(this.value).toFixed(2)">
<br>Change ↑ to 1.111, hit tab
and try to undo.

键入一个数字,然后删除焦点,它将更改为所需的格式。但是您无法按 ctrl-Z 返回。

可悲的是,这是预期的行为。 上一个即使在"外部"脚本更改中保留文本字段值的历史条目的浏览器曾经是 Firefox,但据称它存在性能缺陷,特别是与其他丢弃历史记录的浏览器相比,因此它已被削弱以匹配它们。(见 https://bugzilla.mozilla.org/show_bug.cgi?id=1523270(

据我了解,要保留用户对更改字段的撤消历史记录,您必须进行自己的历史记录管理,为此似乎不存在足够可靠的API。 因此,唯一的选择似乎是手动存储历史记录,劫持键盘事件并收听通常可以触发撤消的组合键。 听起来很徒劳。

最新更新