我在jQuery Mobile网站中使用<input type="search" />
个文本框。对于我想保留的这些类型的字段,JQM提供了开箱即用的强大功能,但是,我遇到了麻烦。
我不得不在ASP.NET WebForms中创建我的移动网站。因此,我的所有标记都包含在一个超级form
元素中。
现在,当您在Mobile Safari中输入文本到搜索输入时,iPhone / iPad将在键盘底部显示一个漂亮的“搜索”按钮。这很方便,但它似乎对表单执行某种HTTP发布(或表单提交)。由于我的表单包装了所有内容,JQM会将我返回到初始登录页面 - 无论我在网站的哪个位置。
现在问题......我想阻止这种提交发生,并用jQuery代替我自己的一些逻辑。我尝试过以下(确实会触发),但是,“post”或“submit”仍在继续,尽管返回false并防止默认。 如何拦截此事件?
// Prevent form posts
$('form').live('submit', function (e) {
// Custom logic here
e.preventDefault(); // <-- fires, but does not prevent JQM from returning to landing page
return false;
});
答案 0 :(得分:1)
尝试将data-ajax="false"
添加到表单标记中。听起来好像jQuery Mobile Framework仍然高举submit
事件并运行自己的表单的AJAX提交。
<form data-ajax="false"...
此外,您应该放弃使用.live()
。它从jQuery 1.7开始折旧,如果你使用的是jQuery 1.6或更高版本,那么你应该已经在使用.delegate()
。
$('form').live('submit', function (e) {
更改为:
$(document).delegate('form', 'submit', function (e) {
jQuery Mobile 1.0与jQuery Core 1.6.4打包在一起,但如果转到jQuery Core 1.7或更高版本,则.on()
是绑定事件的建议方法。上面的事件处理程序声明可以使用.on()
编写,如下所示:
$(document).on('submit', 'form', function (e) {