2

我在使用 Svelte3 为 KaiOS 开发应用程序时遇到了这个奇怪的问题。当输入字段设置为输入数字时,退格不起作用。完全没有。

<input
 bind:this={ref}
 bind:value
 type="number" />

当它设置为“文本”时,它工作得很好。Backspace 会在按下时删除字符。在这种情况下,退格键是 KaiOS 设备上的“通话结束”按钮。我不知道这是 KaiOS 问题还是 Svelte3 问题。

我对 WebDev 技术不是很熟练,所以我不知道还能尝试什么。一些可能指向某事的附加信息。

我在全球有一个听众

 window.addEventListener("keydown", onKeyDown, true);

它附加在我的 KeyListener 中,用于通过可选元素控制我的应用程序导航。当输入字段具有焦点时按下退格键也不会触发。我尝试过的事情。

  • 将函数分配给 onkeydown、onkeyup、onkeypressed(它们都不会触发退格调用)
  • 删除了我上面提到的事件侦听器,没有任何改变。
  • 以非精简的方式将函数分配为纯 JS 内联函数。

在 KaiOS 上,只有 onkeydown 会触发,以防万一这可能会给任何 web 开发 JS 专家一个提示。我不知道还能做什么。任何建议,将不胜感激。

4

2 回答 2

2

我们不知道为什么会这样,但是将输入类型设置为“tel”会使退格键触发并且输入字段正常运行,同时仍然只允许数字。

于 2020-03-30T07:47:35.587 回答
0

要处理窗口上的事件,您可以使用<svelte:window>. 例如:

<svelte:window on:keypress={handleKeypress}/>

但是,如果您只想监视输入上的按键,则可以<input>直接使用<input on:keypress={...}/>.

这是处理输入按键的示例:https ://svelte.dev/repl/bfd93b0799c142979eefa1f2558bfb96?version=3.20.1

于 2020-03-28T20:21:54.157 回答