为什么.focusout在调用.submit时调用--jquery

时间:2013-11-03 19:26:45

标签: javascript jquery

我希望向用户提供表单反馈,因为他们无需关注输入和提交表单。它只在我有焦点方法时有效,但在我添加提交方法时失败。

(function(){
        $('input').focusout(function(){
            if($(this).val() == ""){
                $('.jsError').html('<p class="alert alert-danger text-center">'+$(this).attr('name')+' is required.</p>'); 
            }
        });

        //when the submit button is pressed
        $("#register").click(function(event){
            //var input = $(this).parent().find('input[value=""]');
            if(!input.length){
                event.preventDefault();
                $('.jsError').html('<p class="alert alert-danger text-center">'+Please fill in the form+'</p>');
            }else{
                //set variables
                var email = $('#email'),
                    emailConf = $('#emailConf'),
                    pass = $('#pass'),
                    passConf = $('#passConf'),
                    stageName = $('#stageName'),
                    mainClub = $('$mainClub'),
                    mainSkill = $('#ent_main_skill'),
                    termsAgree = $('#agreeToTerms');
            }
        }); 
})();

我当时认为这是event.preventdefault,但它本身似乎没有做任何事情。

1 个答案:

答案 0 :(得分:1)

通过查看注释行我可以看到,您正在尝试查询所有没有值的输入。这意味着,如果input.length大于0,则会出现错误,但如果它是0则表示所有表单字段都已填充。

你实现的逻辑恰恰相反,它应该是:

if (input.length) {
    //errors
} else {
   //no errors
}