2013-04-17 80 views
2

我买了我的验证码的问题...我有一个表格有两个字段(user和pass)和jQuery函数执行上提交功能:的Javascript的onsubmit功能自动执行

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; 
    } 
}); 

的事实上,这段代码运行在页面加载,但onSubmit什么也没有发生......

我敢肯定,这是一个容易的,但我看不到一个解决方案。

回答

6

您需要:

$('#login-form').on('submit', validateData); 

validateData后缺少括号。

当你拥有它,你呼吁在页面加载的功能,并设定它的返回值(false)作为submit处理程序的形式。

(你应该做的定义validateData功能

+1

OMG!我的脸现在正在融化......非常感谢=) –

+0

函数将在一个单独的文件中,但忽略它,为什么我应该首先声明函数? –

+2

@ AxelA.Grazx:没有技术原因,但是风格问题 - 在定义它之前引用当前块中的函数是有效的JavaScript,但看起来很奇怪,而且如果您将编码样式更改为validateData = function(){...}'。 – RichieHindle

3

应该是:

$('#login-form').on('submit', validateData);