当键盘打开时,表单提交按钮事件不会被捕获

Form submit button event is not captured when keyboard is up iOS 7

本文关键字:事件 按钮 表单提交 键盘      更新时间:2023-09-26

我正在使用cordova瞄准iOS构建一个web应用程序。我有这个表单

<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中显示时,点击提交按钮并不总是触发提交事件。有时它在前两次工作,但随后停止工作。有人遇到过这种情况吗?

现在你可能需要先点击键盘上的"完成"(让它消失),然后使用提交按钮。或者,单击显示键盘的提交按钮,这将使键盘隐藏,然后再次单击提交。

任何想法?

编辑

它在iOS 6上工作得很好,但在iOS 7上,提交按钮在前两次点击后不会触发事件。

所以我解决了我的问题。正如问题中所述,它在ios6和android上运行良好。但在ios7中,我注意到当我增加提交按钮上方文本框的高度时,就会出现上面描述的错误。当我没有添加任何影响元素高度的非默认样式时,提交按钮可以正常工作。奇怪的权利。

但后来我看到了这个问题。

因此,我没有使用提交按钮并让脚本等待提交事件触发,而是将按钮更改为链接并侦听触摸端事件。砰的一声,这招很管用。

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

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