【问题标题】:Angular submit form on enter not working for number input on mobile输入时的角度提交表单不适用于移动设备上的数字输入
【发布时间】:2023-03-26 00:36:01
【问题描述】:

我有一个由 Angular 处理的基本表单(为清楚起见,省略了类和标签):

<form>
    <input type="text" />
    <input type="number" />
</form>

在桌面视图中,两个输入都允许我按 Enter 键将表单提交给 Angular。

但是,在移动视图上(在 Chrome Android 5.0 上测试),只有文本输入允许按下回车按钮将表单提交给 Angular。在数字输入过程中按 Enter 按钮时,没有任何反应。

这是一个已知的错误吗?此问题是否存在解决方法?

编辑:

在只有一个输入的情况下也会发生相同的行为:

<form>
    <input type="text" />
</form>

<form>
    <input type="number" />
</form>

【问题讨论】:

    标签: angularjs forms mobile


    【解决方案1】:

    移动键盘的工作方式与您想象的不同,这就是问题所在。如果表单中只有 1 个输入字段,则 enter 键提交表单,但如果有 2 个或更多,则 enter 键移动到下一个输入。

    在您的 &lt;form&gt; 示例中,数字字段后缺少提交按钮。所以 Chrome 没有下一个输入可以去。所以这只是一个死胡同。

    您可以尝试添加 &lt;input type="submit" value="Go"&gt; 并将其可见性设置为 0。我建议您至少使用一个小的提交图标。

    仅通过 Enter 键提交的表单在设计上不适合移动设备。

    这是对类似 SO 问题的参考:

    HTML: Why does Android browser show "Go" instead of "Next" in keyboard?

    【讨论】:

    • 如果只有文本输入而没有提交输入,手机键盘会提交表单。如果仅存在数字输入而没有提交输入,则移动键盘将不会提交表单......所以理论上Angular不需要提交输入来提交我猜的表单。那么为什么这两种输入类型之间的移动键盘输入按钮的行为不同呢?
    • 这不是角度问题。 Chrome 中单个文本输入的默认行为是假设它是一个搜索字段。如果该字段是数字类型,则提交没有默认名称,因此 Chrome 不知道如何调用 enter 键。所以它只是忽略它。我知道这是垃圾场,但这就是我的理解。
    • 好的,感谢您澄清文本输入作为搜索字段的默认行为。后续问题:如果一个可见的&lt;button type="submit&gt;被附加到单个数字输入表单中,该表单仍然不会使用移动输入按钮提交... :-)
    • 试试&lt;input type="submit" name="submit" value="Submit"&gt;,如果不行的话。那么这很糟糕。当手机出现这样的问题时,我讨厌它。我在 iPhone 和 HTML 的 Safari 上看到了一些非常愚蠢的问题。
    • 太糟糕了,我仅限于 &lt;button&gt;,因为它具有非自动关闭的性质。感谢您的见解。
    猜你喜欢
    • 1970-01-01
    • 2015-02-18
    • 1970-01-01
    • 2019-12-31
    • 2016-05-14
    • 1970-01-01
    • 2019-11-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多