iOS网页应用GO键盘按钮无法提交Ajax表单

5
我有一个iOS Web应用程序,需要通过Ajax提交表单,大部分情况下可以工作。唯一不起作用的是键盘上的GO按钮。
在桌面浏览器上,一切都可以通过提交来实现(提交按钮或按下回车键)。
在Safari iOS上,一切也可以正常工作(提交按钮、键盘的GO按钮)。
但是,在iOS上将其用作Web应用程序时,GO按钮无法正常工作!
这种行为可能是什么原因造成的?据我所知,iOS Web应用程序仍然使用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()。它并没有成为我的瓶颈,但我不喜欢不必要的代码。:)

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

iOS GO按钮、Enter和提交按钮现在都有响应了。

3个回答

5
我发现给 a 标签添加 target="_blank" 会导致 iOS 键盘上的 Go 按钮失效。

1
快到2019年了,我遇到了同样的问题。我发现在form标签中任何target属性都会导致GO按钮无法提交表单。我一直在尝试找出为什么Mailchimp表单在iOS Safari中不能正常工作,原来是这个问题。 - TheRightChoyce

3

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

$("#myForm input").live("keyup", function(evt) {
  if (evt.keyCode === 13) {
    $("#myForm").trigger("submit");
  }
});

谢谢,但如果我在表单提交代码之前放置那段代码,它不会有任何影响。 奇怪的是,在Safari应用程序中查看时(即使没有您的代码),它确实可以工作,但在使用它作为Web应用程序(添加到主屏幕)时却不能。 - fishbaitfood

0

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

另外,请问为什么你要通过JS阻止默认的表单动作呢?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接