【问题标题】:Stop form submitting when clicking 'Go' on mobiles在手机上单击“开始”时停止提交表单
【发布时间】:2014-04-01 10:51:14
【问题描述】:

有没有办法将按钮链接到输入,所以当您在 .NET 上下文中按下键盘上的NextGo 时,手机知道该怎么做(即在输入上按下“Go”会伪造点击下一步按钮而不是提交表单)?

让我们谈谈代码。我有以下标记,其中injected-via-js 通过 javascript 注入到一个大表单中(渐进增强)。

<form class="dotNET-form-wrapper">
    <div class="injected-via-js">
        <div>
            <span>&pound;</span>
            <input type="number" />
        </div>
        <div>
            <button>accept</button>
        </div>
    </div>

    <!-- More form elements -->
</form>

在大多数移动浏览器上,当您更改数字输入中的值并按 GoEnter 时,它会伪造按钮按下(在我的情况下,它绑定了一个重要事件)。然而,在一些旧的 Android 设备上,按下 Go 会提交表单,这 不是 我想要的。澄清一下:我希望 Go 按钮伪造按钮按下,而不是提交表单

注意: .NET 仅与此问题相关,因为 everything 都包含在表单中,这意味着我无法围绕输入和按钮创建单独的表单并劫持新表单的提交。

我制作了一个 JSBin,我可以在其中使用Android 2.2 电话复制此错误,尽管我认为它也存在于其他不良浏览器上。它在 iOS 6+Android 2.3+ 上按预期工作。

这里是演示页面:http://jsbin.com/tebizoda/2

这是编辑版本:http://jsbin.com/tebizoda/2/edit

【问题讨论】:

  • 什么移动平台?
  • 我在默认浏览器上运行 Android 2.2 的 HTC Desire 上看到了这个错误。我想其他具有类似版本的 Android + 垃圾浏览器的平台也有这个问题。理想情况下,我试图找到一种解决方案,使浏览器无需“猜测”该做什么。

标签: javascript html .net forms mobile


【解决方案1】:

“Go”和“Enter”都具有键盘上的 Enter 键 (13) 等键码,因此您应该只创建一个 JavaScript 或 jQuery 函数来覆盖默认行为并触发按钮按下。类似于(jQuery 中的示例):

$(your_form_or_input).keypress(function (e) {
  if (e.keyCode == 13) {
    return false;
  } else {
    // your code here...
  }
});

请注意,一些浏览器使用 e.keyCode,其他浏览器使用 e.which 来确定按下的键代码。

【讨论】:

  • 太棒了。似乎已经成功了。当按下 enter 时,我没有返回 false,而是触发了按钮上的 click 事件。
猜你喜欢
  • 1970-01-01
  • 2023-04-05
  • 2019-07-09
  • 1970-01-01
  • 2015-05-04
  • 2015-07-07
  • 1970-01-01
  • 2015-02-15
相关资源
最近更新 更多