Javascript onSubmit函数自动执行

Axe*_*cía 2 html javascript jquery

我的验证代码出了问题...我得到了一个包含两个字段(用户,传递)的表单和一个在提交时执行函数的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;
    }
});
Run Code Online (Sandbox Code Playgroud)

事实是这个代码在页面加载时运行,但onSubmit没有任何反应......

我确信这很简单,但我看不到解决方案.

Ric*_*dle 6

你需要:

$('#login-form').on('submit', validateData);
Run Code Online (Sandbox Code Playgroud)

注意之后没有括号validateData.

正如您所拥有的那样,您在页面加载时调用该函数并将其返回值(false)设置submit为表单的处理程序.

(你应该在定义validateData函数后这样做.)

  • @ AxelA.Grazx:没有技术原因,但是风格问题 - 在定义它之前引用当前块中的函数是有效的JavaScript,但看起来很奇怪,如果你将编码风格改为`validateData =将会失败function(){...}`. (2认同)