jquery验证时未清除html输入

jquery验证时未清除html输入,jquery,validation,Jquery,Validation,当HTML输入中的类变为空时,我遇到了从中删除类的问题 请参阅: 这种情况会在一瞬间发生,或者如果您在字段中按住backspace按钮。 之后的任何时候,字段都会进入“有效”类-为什么?如何修复?您的逻辑相当复杂。有时会出现同时应用.valid和.invalid的不良情况。请尝试以下方法: $(function() { $('form').validate(); $('input').bind('input', function() { if ($(this).v

当HTML输入中的类变为空时,我遇到了从中删除类的问题

请参阅:

这种情况会在一瞬间发生,或者如果您在字段中按住backspace按钮。
之后的任何时候,字段都会进入“有效”类-为什么?如何修复?

您的逻辑相当复杂。有时会出现同时应用
.valid
.invalid
的不良情况。请尝试以下方法:

$(function() {
    $('form').validate();
    $('input').bind('input', function() {
        if ($(this).val() != '') $(this).addClass('nonEmpty');
        else $(this).removeClass('nonEmpty');

        if ($(this).valid()) $(this).addClass('valid');
        else $(this).removeClass('valid');
    });
});


您将验证插件的功能与自己的代码混为一谈。您可以删除
有效的
类名,但如果验证插件认为该字段有效,则会将其重新添加


如果您希望验证插件拒绝一个空白字段,则必须给它
class=“required”
。如果您想手动监视、添加和删除类,您并没有真正按照IMO的预期使用验证插件。

我不熟悉输入事件-您确定这就是您要绑定的事件吗?是的,我使用“输入”,因为它会在所有按键+粘贴时触发。我认为它对我有效。当我擦除所有输入时,背景再次变为白色。这不是你想要的行为吗?编辑:事实上,我把它拿回来了——我在那里放了一个警报,我认为这导致了一个不同的计时条件——当我删除它时,背景保持绿色。我将不得不进一步研究它。谢谢,它是有效的-但是你能解释一下为什么我的逻辑“非常复杂”,为什么我的方法不起作用吗?+1,注意,在IE 8或更低版本中不支持onInput事件。它在IE9中工作@乔丹:首先,你的代码允许输入既有效又无效!很难说持久有效状态的原因是什么。哦,事实上-我忘了调用选择器上的.removeClass()来删除相反的类。我在JSFIDLE上做了此更改,但有效状态仍然存在。如果有人能解释原因,请解释@威尔·马丁:谢谢。这太完美了,谢谢你指出验证插件保留了.valid和.invalid类名。我没有意识到这一点。将类名更改为my_valid和my_invalid,并添加removeClass()已奏效。这里的最终工作代码:谢谢大家。
.nonEmpty {background: #E4CCCC;}
.nonEmpty.valid {background: #9BCC60;}