为什么 jQuery .submit() 事件似乎不会在 iPad 上触发?
Why does the jQuery .submit() event not appear to trigger on iPads?
我目前 运行 遇到一个问题,我有一个表单需要中断其默认提交行为并替换为 Ajax 调用。我当前的设置似乎适用于所有其他台式机和移动设备(包括 iPhone!),但始终无法用于 iPad。具体来说,jQuery 的 .submit()
似乎根本不会触发。在 event.preventDefault();
和 return false;
语句之间放置一个 alert()
调用似乎表明永远不会到达代码块。我还尝试将提交按钮切换为普通按钮并在单击时提交,然后切换到 on('submit', functon(){...});
语法无济于事。
关于可能原因的任何解决方案或想法?
HTML结构:
<form id="targetForm" action="">
<!--inputs go here-->
<input type="submit" value="Submit"/>
</form>
Javascript结构:
<script>
$(document).ready(function() {
$('#targetForm').submit(function(event) {
event.preventDefault();
alert('test');
//Ajax call goes here
return false;
});
});
</script>
事实证明,问题存在于 $(document).ready()
事件之外定义的不相关函数中,其中变量声明未以分号终止且缺少 var
关键字。它在任何其他设备上没有抛出任何错误,但导致整个外部 JS 文件无法执行。
编辑,更多信息:iPad 上使用的任何 JS 引擎似乎都是一个问题。出于某种原因,任何小的技术上不正确的语法问题(如果您出于某种原因使用默认参数值,它甚至会失败!)脚本文件中的任何地方都会阻止任何 JS 运行。他们的引擎似乎非常严格地非常精确地满足非常具体的语法标准,如果你不完全符合它们,就会用失败的错误来严厉惩罚你。
简而言之:我的登录问题已解决。
我目前 运行 遇到一个问题,我有一个表单需要中断其默认提交行为并替换为 Ajax 调用。我当前的设置似乎适用于所有其他台式机和移动设备(包括 iPhone!),但始终无法用于 iPad。具体来说,jQuery 的 .submit()
似乎根本不会触发。在 event.preventDefault();
和 return false;
语句之间放置一个 alert()
调用似乎表明永远不会到达代码块。我还尝试将提交按钮切换为普通按钮并在单击时提交,然后切换到 on('submit', functon(){...});
语法无济于事。
关于可能原因的任何解决方案或想法?
HTML结构:
<form id="targetForm" action="">
<!--inputs go here-->
<input type="submit" value="Submit"/>
</form>
Javascript结构:
<script>
$(document).ready(function() {
$('#targetForm').submit(function(event) {
event.preventDefault();
alert('test');
//Ajax call goes here
return false;
});
});
</script>
事实证明,问题存在于 $(document).ready()
事件之外定义的不相关函数中,其中变量声明未以分号终止且缺少 var
关键字。它在任何其他设备上没有抛出任何错误,但导致整个外部 JS 文件无法执行。
编辑,更多信息:iPad 上使用的任何 JS 引擎似乎都是一个问题。出于某种原因,任何小的技术上不正确的语法问题(如果您出于某种原因使用默认参数值,它甚至会失败!)脚本文件中的任何地方都会阻止任何 JS 运行。他们的引擎似乎非常严格地非常精确地满足非常具体的语法标准,如果你不完全符合它们,就会用失败的错误来严厉惩罚你。
简而言之:我的登录问题已解决。