简单地使用BigInt表示法似乎可以达到以下目的:
const input = document.querySelector('input[type="text"]'),
step = {ArrowUp: 1n, ArrowDown: -1n};
input.addEventListener("keydown", (e) =>
{
if (step[e.key])
{
input.value = BigInt(input.value) + step[e.key];
return e.preventDefault();
}
});
<table>
<tr>
<td>type="text"</td>
<td><input type="text" value="9007199254740990"></td>
<td>use UP/DOWN arrow keys</td>
</tr>
<tr>
<td>type="number"</td>
<td><input type="number" value="9007199254740990"></td>
</tr>
</table>
如果您担心过时的浏览器,可以使用
alternative implementation
复制BigInt。