5

我有这个 iOS 网络应用程序,它需要通过 Ajax 提交一个表单,这在很大程度上是有效的。唯一不起作用的是键盘上的 GO 按钮没有响应。

在桌面浏览器上,一切正常提交(提交按钮,或输入键)

在 Safari iOS 上,一切正常(提交按钮、GO 键盘按钮)

但是在 iOS 上将其用作 Web App 时,GO 按钮不起作用!

什么可能导致这种行为?据我所知,iOS 网络应用程序仍在使用 Safari ...... :)

<form id="myForm" name="form" action="link-to-script.php" method="post">
<table>
    <tr>
        <td><input id="name" name="name" type="text" size="20" maxlength="25" /></td>
    </tr>
    <tr>
        <td><input id="email" name="email" type="text" size="20" maxlength="50" /></td>
    </tr>
    <tr>
        <td><input type="submit" name="Submit" value="Send" /></td>
    </tr>
</table>

$('#myForm').submit(function(e) {
    e.preventDefault();  // Doesn't matter
    var dataString = $(this).serialize();
    $.ajax({
        type: "POST",
        url: "http://link-to-script.php?",  // Valid link for the use of this form
        cache: false,
        data: dataString,
        success: function() {

        }
    });
});

更新(已解决):我preventDefault()再次删除了。它并没有成为我的瓶颈,但我不喜欢不必要的代码。:)

当我return false;在底部添加时$('#myForm').submit(function() {,一切都像我想要的那样工作。

iOS GO 按钮、Enter 和 Submit 按钮现在都响应了。

4

3 回答 3

5

我发现在标签中添加 target="_blank" 会破坏 iOS 键盘上的 Go 按钮。

于 2015-02-23T16:56:33.467 回答
3

您是否尝试过连接到“完成/输入”按钮:

$("#myForm input").live("keyup", function(evt) {
  if (evt.keyCode === 13) {
    $("#myForm").trigger("submit");
  }
});
于 2012-08-24T12:10:15.593 回答
0

在表单中提供表单操作的完整 URL,或者不要通过 JS 提交。您为同一个表单设置了两个表单操作 - 一个在没有完整 URL 的表单操作中,第二个在您的 Ajax 提交中。

另外,为什么要阻止 JS 的默认表单操作?

于 2012-08-30T22:59:32.020 回答