2012-10-18 73 views
0

我不明白我做错了什么。如何添加样式到具有一些CSS类onsubmit输入的div?

如果输入无效,我想将背景添加到父div。

我的意思是 - 如果电子邮件输入hasClass错误,则将背景添加到field2。

这里是我的js代码:

$('.login').submit(function() { 

$(':input').each(function() { 

if ($(this).hasClass('valid')) { 

$(".field2").has($(this)).removeClass('bg2').addClass('bg1'); 
    } 
if ($(this).hasClass('error')) { 

$(".field2").has($(this)).removeClass('bg1').addClass('bg2'); 

    } 
}) 

}); 

我有工作代码:

$('input').each(function() { 

    if ($(this).hasClass('valid')) { 

$(".field2").has(this).removeClass('bg2').addClass('bg1'); 
    } 
if ($(this).hasClass('error')) { 

$(".field2").has(this).removeClass('bg1').addClass('bg2'); 

} 
}) 
} 
window.setInterval(foo3, 1); 

但为什么以前的变种不工作?

和HTML:

<div class="field2"> 
    <label for="user_email" id="em">E-mail Adress</label> 

    <input id="user_email" name="user[email]" size="30" type="email" value="" class="error"> 
    </div> 

有什么问题在我的jQuery - 可以someon有什么建议?

回答

0

我想代替$(':input')选择器应该是$('input')

因为:input与任何DOME元素不匹配。

+0

不,不工作... – MID

+0

什么? ':input'是[弃用的jQuery选择器](http://api.jquery.com/input-selector/)。 – VisioN

+0

我试图把'$('input')' - 我的问题依然存在。 – MID

0

你最好在这种情况下使用closest()

$('.login').submit(function() { 
    $(':input').each(function() { 
     if ($(this).hasClass('valid')) { 
      $(this).closest('.field2').removeClass('bg2').addClass('bg1'); 
     } 

     if ($(this).hasClass('error')) { 
      $(this).closest('.field2').removeClass('bg1').addClass('bg2'); 
     } 
    }) 
});​ 
+0

谢谢,但你的代码不会添加bg类。只有当我点击两次。奇怪... – MID

0

这是因为页面提交后,页面会回发到服务器。添加event.preventDefault()停止回传并将.submit()添加到代码的末尾以重新提交。看代码波纹管:

$('input[type="submit"]').click(function(e) { 
    e.preventDefault(); 

    $(':input').each(function() { 
     if ($(this).hasClass('valid')) { 
     $(".field2").has($(this)).removeClass('bg2').addClass('bg1'); 
     } 
     if ($(this).hasClass('error')) { 
     $(".field2").has($(this)).removeClass('bg1').addClass('bg2'); 
     } 
    }) 

    if ($('input[class="error"]').length == 0) { 
     $('.login').submit(); 
    } 
}); 
+0

现在,登录表单根本没有提交。 – MID

+0

像这样: $( '登录 ')提交(函数(e)中{ e.preventDefault(); $(' 输入')每个(函数(){ 如果($(本)。 hasClass('valid')){(this).closest('。field2')。removeClass('bg2')。addClass('bg1'); } if($(this).hasClass(' ')){(this).closest('。field2')。removeClass('bg1')。addClass('bg2'); } }) $(this).submit(); } ); – MID

+0

我认为你需要一些验证。尝试看修改后的代码。这包括你的所有代码。 – Habibillah

相关问题