jQuery表单验证问题?

时间:2011-09-23 00:14:11

标签: javascript jquery

我是jQuery和javascript的新手,我主要用于php。我正在升级我的网站,所以它包含一些小的ajax来提高可用性并让我忙碌!

我正在使用这个简单的小脚本,我把它放在一起登录页面。一切都很好,但我有几个问题我想问一下!

$('#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(........)) {

在javascript中是否有一种简单的方法来执行此操作,因为当用户第一次激活该函数时,将没有类 .error 的HTML?

此外,我正在尝试向函数添加新参数以及事件参数,我该怎么做?我试过以下几个?

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

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

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

似乎一切都没有用。然后我再次通过php,jQuery / javascript不是我的强项!

由于

2 个答案:

答案 0 :(得分:0)

在执行操作之前,您可以使用以下语法检查函数$()是否选择了元素:

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

答案 1 :(得分:0)

如果默认情况下.error - div存在于DOM中并且只是隐藏,则不能只检查$('.error')的长度,因为即使它是空的,长度也会返回1. / p>

你可以这样做:

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

这将检查error-div的包含字符串,因此如果它为空,则length将返回0.

我还是建议设置一个布尔变量。如果发生错误,则将其设置为false,您可以检查var,并且不必为这么简单的任务查询DOM元素。

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

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

function handleSubmit(event){

  var passedVar = event.data.variable1;
}