当键盘启动iOS 7时,不会捕获表单提交按钮事件

时间:2014-06-19 12:37:15

标签: javascript ios cordova

我正在使用针对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中显示时,单击提交按钮并不总是触发提交事件。有些时候它会在前两次工作,但之后会停止工作。以前遇到过这种情况的人?

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

有什么想法吗?

修改

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

1 个答案:

答案 0 :(得分:6)

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

但后来我读了question

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

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

所以我让这个事件绕过并触发提交事件,以便点击&#34; Go&#34;键盘上的按钮仍然会触发提交功能。