event.preventDefault()不阻止在jQuery Mobile .live()事件上提交表单

时间:2011-09-15 23:02:18

标签: jquery-mobile

我正在尝试阻止登录表单提交,以便我可以查询服务器,验证用户名和密码,然后才转到主页。

以下是相关代码:

在login.html中:

        <form id="login-form">
            <input type="text" name="login-username" id="login-username" value="" placeholder="Username" />
            <input type="password" name="login-password" id="login-password" value="" placeholder="Password" /><br />
            <button id="cab-submit" type="submit" data-theme="a" data-inline="true">Log In</button>
        </form>

在app.js中:

    $("#login-form").live("submit", function(event) {
        event.preventDefault();
        $.mobile.changePage("main.html", {
            transition: "fade"
        });
    });

我是一名经验丰富的jQuery程序员,但从未遇到过这种情况。 changePage()确实有效,但只在表单提交后才会发生,这会导致不必要的页面加载。

编辑:找到解决方案。

如果我想自己处理表单提交,我必须在表单中添加data-ajax =“false”。这很好。

新标记:

        <form id="login-form" data-ajax="false">
            <input type="text" name="login-username" id="login-username" value="" placeholder="Username" />
            <input type="password" name="login-password" id="login-password" value="" placeholder="Password" /><br />
            <button id="cab-submit" type="submit" data-theme="a" data-inline="true">Log In</button>
        </form>

2 个答案:

答案 0 :(得分:14)

回答了我自己的问题。如果我想自己处理表单提交,我必须在表单中添加data-ajax =“false”。这很好。

新标记:

    <form id="login-form" data-ajax="false">
        <input type="text" name="login-username" id="login-username" value="" placeholder="Username" />
        <input type="password" name="login-password" id="login-password" value="" placeholder="Password" /><br />
        <button id="cab-submit" type="submit" data-theme="a" data-inline="true">Log In</button>
    </form>

答案 1 :(得分:0)

尝试将提交按钮上的ID更改为id =“submit”,然后查看会发生什么。看起来它可能是jQuery mobile的一个已知问题。