2011-09-23 102 views
0

我是新来的jQuery和JavaScript,我主要用于PHP。我正在升级我的网站,因此它包含一个小Ajax以提高可用性并让我忙!jQuery表单验证问题?

我正在使用这个简单的小脚本,我扔在一起的登录页面。所有工作都很好,但我想问一些问题!

$('#loginForm .submit').click(function(event) { 
    $('.error').hide(); 
    event.preventDefault(); 
    var errors = 0; 
    var loginEmail = $('#loginEmail').val(); 
    var loginPassword = $('#loginPassword').val(); 

    if (loginEmail.length == 0) { 
     $('#loginEmail').after('<div class="error"></div>'); 
     errors++; 
    } 

    if (loginPassword.length == 0) { 
     $('#loginPassword').after('<div class="error"></div>'); 
     errors++; 
    } 

    if (!errors) { 
     $('.submit').submit(); 
    } 
}); 

您会注意到该函数内的第一行代码是;

$('.error').hide(); 

现在在PHP中,我通常会使用;

if (isset(........)) { 

是否有simliar办法做到这一点在JavaScript当用户第一次启动会出现与类.error没有HTML功能?

另外我试图给函数添加一个新参数以及事件参数,我该怎么做?我试过以下?

$('#loginForm .submit').click(function(event, var) { 

$('#loginForm .submit').click(function(event var) { 

$('#loginForm .submit').click(function('event', 'var') { 

而且都似乎没有工作。然后我再次通过PHP,jQuery/JavaScript不是我的强项!

感谢

回答

0

执行行动之前,您可以检查是否通过使用下面的语法功能$()选定的元素:

if ($('.error').length) 
{ 
    // actions 
} 
0

如果.error - DIV存在于DOM默认情况下,是刚刚隐藏,你不能只检查长度$('.error'),因为即使它是空的,长度将返回1.

你可以这样做:

if($('.error').html().length !== 0){ 
    //do something 
} 

这将检查错误div的包含字符串,因此,如果它是空的,长度将返回0

不过我建议设置一个布尔变种。如果发生错误,它将被设置为false,并且您可以检查该var,并且不必为这样简单的任务查询DOM元素。

你的第二个问题,尝试这样的事情:

$('#loginForm .submit').bind("click", {variable1: var}, handleSubmit); 

function handleSubmit(event){ 

    var passedVar = event.data.variable1; 
}