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

Jam*_*ren 19 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>
Run Code Online (Sandbox Code Playgroud)

在app.js中:

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

我是一名经验丰富的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>
Run Code Online (Sandbox Code Playgroud)

Jam*_*ren 15

回答了我自己的问题.如果我想自己处理表单提交,我必须在表单中添加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>
Run Code Online (Sandbox Code Playgroud)

  • 是的应该是.然而,它不适合我,我也使用1.3.1.只有在添加数据-ajax ="false"之后才有效. (2认同)