2010-01-05 15 views
0

我最近被通知我的購物車應用程序在Mobile Safari(iPhone,iPod Touch)中查看時中斷了。 「添加到購物車」表單使用「漸進式增強」方法來支持使用jQuery進行AJAX更新。一些快速測試表明,該功能在JavaScript禁用的情況下確實有效。到目前爲止,我讀過的所有內容都表明,iPhone不支持「form.onsubmit」事件,這是我目前使用jQuery綁定以啓動AJAX事務的事件。如何使現有的AJAX表單與iPhone兼容?

我可以進行修改以添加iPhone支持而不使用做任何瀏覽器檢測或提供備用腳本?

當前表單模板:

<form method="post" action="" class="my-cart"> 
    <fieldset> 
     ... 
     <input type="submit" name="my-button" value="add to cart" /> 
    </fieldset> 
</form>

和腳本事件:

$('form.my-cart').submit(function(){ 
    ... 
});

我已經在瀏覽器支持方面曾與這個偉大的成功(大部分瀏覽器都支持AJAX/JavaScript的,但所有其他人 - 除iPhone以外 - 將回退到常規表格提交等等..)。我想在iPhone中支持AJAX功能,但是我會解決繞過JavaScript。現在,iPhone只需單擊提交按鈕即可完成沒有任何操作

回答

0

感謝兩位響應者。問題原來與其他部分相關的代碼有衝突。表單本身在工作,但事件並未被調用,因爲上述代碼以某種方式阻止了提交事件的觸發。

1

我已經使用上使用ajaxSubmit功能的iphone jQuery的形式插件(http://jquery.malsup.com/form/)和它的偉大工作:

$('form.my-cart').ajaxSubmit(function(){ 
    ... 
}); 
+0

謝謝,這是一個開始,但我希望減少代碼量。它看起來像這個插件綁定到form.submit和button.click事件;後者可能是使這項工作與iPhone的關鍵。 – 2010-01-06 20:38:44

2

賈斯汀,

您可以檢查Malsup的最新插件,here。你可以看到關於如何將表單綁定到這個插件的例子。有兩種方法可以使用,使用ajaxSubmit()或簡單的ajaxForm()

如果您使用的是ajaxSubmit(),那麼您必須手動執行,處理提交按鈕單擊事件並調用方法。嘗試使用ajaxForm(),插件會爲您做所有必要的綁定。每次提交表單時,插件都會自動處理它,所以您不必親自處理提交按鈕單擊事件。

如果您認爲這個插件代碼沉重,您覺得怎麼樣?這個插件可以處理所有類型的標準格式,請參閱測試here。它比其他插件更好地處理各種類型的表單字段。插件還提供各種獲取字段值的方法,例如:formSerialize()