JQuery mobile - 返回false而不是阻止表单提交

时间:2011-11-18 10:19:46

标签: javascript html jquery-mobile

alert()工作正常,但return false不会停止发布表单 - 有任何想法吗?

<script type="text/javascript">
function form_val() {
    //Check date
    var email=document.getElementById('email').value;
    var passw=document.getElementById('password').value;
    if(email==''||email==null||passw==''||passw==null) {
        alert('Please fill in both fields.');
        return false;
    }  

}
</script>

<form action="userlogin.html" method="post" name="log_form" onsubmit="return form_val();">
    <div data-role="fieldcontain">
        <input type="email" name="email" id="email" value="" placeholder="Email Address" />
        <input type="password" name="password" id="password" value="" placeholder="Password" />
        <div class="ui-grid-a">
        <div class="ui-block-a">
            <button type="submit" name="login" value="" data-theme="c">Sign In</button>
        </div>
        <div class="ui-block-b">
            <br />
            <a href="http://mobile.*****.com/lostpswd.html" rel="external" style="font-size:10px; padding-left:10px;">Forgotten Password?</a>
        </div>
    </div>
</form>

2 个答案:

答案 0 :(得分:2)

您已标记了问题jquery-mobile,但您没有在引用代码中的任何位置使用jQuery。

代码以旧式DOM0的方式显示(这是好的,除了issues with getElementById on IE7 and earlier之外仍然可以工作)。我稍后更改form_val中的支票:

function form_val(){
    //Check date
    var email=document.getElementById('email').value;
    var passw=document.getElementById('password').value;
    if(!email || !passw) {
        alert('Please fill in both fields.');
        return false;
    }  
}

...但是您可能应该使用上面列出的IE问题或者未显示的代码中的页面上的其他脚本错误。

以上是你如何使用jQuery(它自动解决你的IE bug):

jQuery(function($) {
    $("form[name='log_form']").submit(form_val);
});
function form_val() {
    if (!$("#email").val() || !$("#password").val()) {
        alert('Please fill in both fields.');
        return false;
    }
}

...或者如果您不需要form_val是全局的(尽可能避免使用全局函数,并且只需验证此表单就不需要全局函数):

jQuery(function($) {
    $("form[name='log_form']").submit(form_val);
    function form_val() {
        if (!$("#email").val() || !$("#password").val()) {
            alert('Please fill in both fields.');
            return false;
        }
    }
});

答案 1 :(得分:0)

您可以使用常规的“按钮”类型而不是“提交”。然后调用您的JavaScript onclick以验证并提交表单。