【问题标题】:Form submit button event is not captured when keyboard is up iOS 7键盘启动iOS 7时未捕获表单提交按钮事件
【发布时间】:2014-08-10 00:06:20
【问题描述】:

我正在使用面向 iOS 的 cordova 构建网络应用程序。我有这个表格

<form id="formID">

  <div class="row">
    <input type="text" name="something1" placeholder="something1" class="form-control" required maxlength="26" />
  </div>

  <div class="row">
    <input type="text" name="something2" placeholder="something2" class="form-control" pattern=".{6,6}" required />
  </div>

  <div class="row">
    <input type="submit" value="Submit" class="button btn-primary" />
  </div>

</form>

在我的 javascript 中,我有一个提交事件的侦听器。

我的问题是当键盘在 iOS 中显示时,单击提交按钮并不总是触发提交事件。有时它在前 2 次有效,但随后停止工作。有谁遇到过这个问题?

现在您可能需要先单击键盘上的“完成”(使其消失),然后使用提交按钮。或者,单击提交按钮,键盘显示哪个将使键盘板隐藏,然后再次单击提交。

有什么想法吗?

编辑

它在 iOS 6 上运行良好,但在 iOS 7 上,提交按钮在前 2 次点击后不会触发事件。

【问题讨论】:

  • 我也看到过类似的问题,但通常是在尝试通过单击通常不会响应单击或点击的控件来关闭键盘时。另一个很好的测试是查看您的页面是否使用 Mobile Safari 以相同的方式响应;这将帮助您区分这是特定于 Cordova 还是更一般于 UIWebkit。

标签: javascript ios cordova


【解决方案1】:

所以我解决了我遇到的问题。如问题中所述,它适用于 ios6 和 android。但是对于 ios7,我注意到当我增加提交按钮上方的文本字段的高度时,我得到了上述错误。当我没有添加任何影响提交按钮上方元素高度的非默认样式时。奇怪的权利。

但后来我读到了这个question

因此,我没有使用提交按钮并让我的脚本等待提交事件触发,而是将按钮更改为链接并监听 touchend 事件。巴姆,它就像一个魅力。

$(document).on('touchend', 'form #button', function (e) {
    $('#formID').submit();
});

所以我让这个事件绕过并触发提交事件,这样点击键盘上的“Go”按钮仍然会触发提交功能。

【讨论】:

  • 感谢分配!帮助我修复了过去 2 天使用的键盘的错误!
猜你喜欢
  • 2013-08-29
  • 2017-10-04
  • 1970-01-01
  • 2016-07-07
  • 2016-02-18
  • 2013-03-21
  • 1970-01-01
  • 2021-12-12
  • 1970-01-01
相关资源
最近更新 更多