我最近获悉,在Mobile Safari(iPhone,iPod Touch)中查看时,我的购物车应用程序中断了。 “添加到购物车”表单使用“渐进增强”方法来使用jQuery支持AJAX更新。一些快速测试表明,该功能确实适用于禁用的JavaScript。到目前为止我读过的所有内容都表明iPhone不支持“form.onsubmit”事件,这是我目前用jQuery绑定启动AJAX事务的事件。
我是否可以进行修改以添加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只会 nothing 。
答案 0 :(得分:2)
贾斯汀,
您可以在here中查看Malsup的最新插件。您可以看到有关如何将表单绑定到此插件的示例。有两种方法可以使用ajaxSubmit()
或简单的ajaxForm()
。
如果您使用ajaxSubmit()
,则是,您必须手动执行此操作,处理提交按钮单击事件并调用该方法。尝试使用ajaxForm()
,插件会为您执行所有必要的绑定。每次提交表单时,插件都会自动处理它,因此您不必自己处理提交按钮单击事件。
如果您认为这个插件代码很重,那么是什么让您想到它?此插件可以处理所有类型的标准表单,请参阅测试here。它比其他插件更好地处理各种类型的表单字段。插件还提供了各种方法来获取字段的值,例如:formSerialize()
答案 1 :(得分:1)
我使用ajaxSubmit
函数在iphone上使用了jquery表单插件(http://jquery.malsup.com/form/),效果很好:
$('form.my-cart').ajaxSubmit(function(){
...
});
答案 2 :(得分:0)
感谢两位回应者。事实证明这个问题与其他一些部分相关的代码存在冲突。表单本身正在运行,但事件未被调用,因为上述代码以某种方式阻止了触发提交事件。