preventDefault并返回false;如果我添加if else语句

时间:2015-07-22 03:18:57

标签: javascript jquery

我有这个js代码

$(document).ready(function(){

    $("#frm_registration").submit(function(event){
        var submit = false;

        termsIsChecked      = $("#user_terms_of_service").is(":checked");
        uEmail              = $("#user_email").val();
        uPassword           = $("#user_password").val();
        uConfirmPassword    = $("#user_password_confirmation").val();
        uFirstName          = $("#user_firstname").val();
        uLastName           = $("#user_firstname").val();
        uContactNumber      = $("#user_firstname").val();
        uOtherInformation   = $("#user_firstname").val();


        // if(uPassword.length === 0){
        //    uPassword.after("<p>Password can't be blank</p>");
        //    submit = false;
        // }

        if(submit === false){
            event.preventDefault(); 
        }
    });
});

如果我取消注释if块,如果我将event.preventDefault();更改为return false;,则表单将提交事件,如果取消注释if块,它仍然无法正常工作。我的问题是为什么jquery像这样反应,如果我添加if语句 preventDefault 返回false; 不会工作但是如果我删除if语句或注释掉 preventDefault并返回false;会工作。有人解释为什么会像这样

1 个答案:

答案 0 :(得分:2)

问题是uPassword不是jQuery对象,它是一个字符串,因此没有为String对象调用after的方法。哪个应该会在浏览器控制台中显示Uncaught TypeError: uPassword.after is not a function之类的错误。

$("#user_password").after("<p>Password can't be blank</p>");

此外,您必须使用值

初始化submit
$(document).ready(function () {

    $("#frm_registration").submit(function (event) {
        var submit = true;

        termsIsChecked = $("#user_terms_of_service").is(":checked");
        uEmail = $("#user_email").val();
        uPassword = $("#user_password").val();
        uConfirmPassword = $("#user_password_confirmation").val();
        uFirstName = $("#user_firstname").val();
        uLastName = $("#user_firstname").val();
        uContactNumber = $("#user_firstname").val();
        uOtherInformation = $("#user_firstname").val();


        if (uPassword.length === 0) {
            $("#user_password").after("<p>Password can't be blank</p>");
            submit = false;
        }

        if (submit === false) {
            event.preventDefault();
        }
    });
});

演示:Fiddle

相关问题