Javascript onSubmit函数自动执行

Javascript onSubmit函数自动执行,javascript,jquery,html,Javascript,Jquery,Html,我的验证代码有问题。。。我得到了一个包含两个字段(user,pass)和一个jQuery函数的表单,该函数在提交时执行一个函数: jQuery(document).ready(function($) { $('#login-form').on('submit', validateData()); function validateData() { userInput = $('#in-user'); userCntrl = userInput.c

我的验证代码有问题。。。我得到了一个包含两个字段(user,pass)和一个jQuery函数的表单,该函数在提交时执行一个函数:

jQuery(document).ready(function($) {
    $('#login-form').on('submit', validateData());

    function validateData() {
        userInput = $('#in-user');
        userCntrl = userInput.closest('.control-group');
        passInput = $('#in-pass');
        passCntrl = passInput.closest('.control-group');

        userCntrl.addClass('error'); // This executes on page load, not on submit

        formSubmit = false;

        console.log( userInput.val() ); // This logs on page load, not on submit

        return formSubmit;
    }
});
事实上,此代码在页面加载时运行,但在提交时不会发生任何事情

我相信这很简单,但我看不到解决方案。

应该是:

$('#login-form').on('submit', validateData);
你需要:

$('#login-form').on('submit', validateData);
注意
validateData
后面缺少括号

现在,您正在调用页面加载时的函数,并将其返回值(
false
)设置为表单的
submit
处理程序


(您应该在定义
validateData
函数后执行此操作。)

函数将位于单独的文件中,但忽略这一点,为什么我要首先声明函数?@AxelA.Grazx:没有技术原因,但风格问题-在定义有效JavaScript之前引用当前块中的函数,但是看起来很奇怪,如果将编码样式更改为
validateData=function(){…}
,就会失败。