2012-08-24 25 views
5

我有這個iOS web應用程序,需要通過Ajax提交表單,該表單大部分工作。 唯一不起作用的是鍵盤上的GO按鈕沒有響應。iOS web應用程序GO鍵盤按鈕不提交Ajax表單

在桌面瀏覽器,一切正常提交(submit按鈕或回車鍵)

在Safari上的iOS,一切工作正常太(提交按鈕,GO鍵盤按鈕)

但是用它作爲時iOS上的Web App,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() { 

     } 
    }); 
}); 

UPDATE(解決):我再次取出preventDefault()。這不是瓶頸我,但我不喜歡不必要的代碼。 :)

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

iOS的GO按鈕,回車和提交按鈕現在都回應。

回答

3

您是否嘗試過鉤住「完成/輸入」按鈕:

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

謝謝,但如果我在表單提交代碼之前放置該代碼,它將不會有所作爲。 奇怪的是,它在Safari應用程序內部查看時(即使沒有您的代碼片段),但在使用它作爲Web應用程序(添加到主屏幕)時,它不工作。 – fishbaitfood

0

在表格形式的行動提供完整的URL,或者不通過JS提交。您爲同一表單設置了兩個表單操作 - 一個表單操作沒有完整的URL,另一個表示您的Ajax提交。

另外,你爲什麼要阻止JS的默認窗體動作?

4

我發現將一個target =「_ blank」添加到標籤將會破壞iOS鍵盤上的Go按鈕。

相關問題