Javascript 根据匹配数字删除/添加类

Javascript 根据匹配数字删除/添加类,javascript,match,Javascript,Match,当地址字段中没有数字时,我正在处理remove/add类。当字段中没有数字时,必须删除类:“ok form”,并添加类:“error form” 如果我只是添加$(this).removeClass('ok-form').addClass('error-form')在此部分之后(第12行):如果(!$(this).val().match(/\d+/){它不工作 有人有主意吗 $('input[name="shipping_address[address1]"], input

当地址字段中没有数字时,我正在处理remove/add类。当字段中没有数字时,必须删除类:“ok form”,并添加类:“error form”

如果我只是添加
$(this).removeClass('ok-form').addClass('error-form')在此部分之后(第12行):
如果(!$(this).val().match(/\d+/){
它不工作

有人有主意吗

 $('input[name="shipping_address[address1]"], input[name="payment_address[address1]"]').on('blur', function() {
        $(this).removeClass('ok-form error-form');
        if ($(this).siblings('.supercheckout-required').css('display') == "none" && $(this).val() == '') {
            $(this).removeClass('ok-form error-form');
        } else if ($(this).val() == '') {
            $(this).removeClass('ok-form').addClass('error-form');
            $(this).parent().append('<span class="errorsmall">' + required_error + '</span>');
        } else if (!validateAddress($(this).val())) {
            $(this).removeClass('ok-form').addClass('error-form');
            $(this).parent().append('<span class="errorsmall">' + invalid_address + '</span>');
        } else if (validateAddress($(this).val())) {
            if (!$(this).val().match(/\d+/)) {
                if (!$(this).parent().find('.warningsmall').length)
                    $(this).parent().append('<span class="warningsmall">' + street_number_warning + '</span>');
            } else {
                $(this).parent().find('.warningsmall').remove();
            }
            $(this).removeClass('error-form').addClass('ok-form');
        }
    });
$('input[name=“shipping_address[address1]”),input[name=“payment_address[address1]”)。在('blur',function()上{
$(this.removeClass('ok-formerrorform');
if($(this).sides('.supercheckout required').css('display')==“none”和&$(this.val()=”){
$(this.removeClass('ok-formerrorform');
}else if($(this.val()=''){
$(this).removeClass('ok-form').addClass('error-form');
$(this.parent().append(“”+必需的\u错误+“”);
}如果(!validateAddress($(this.val())),则为else{
$(this).removeClass('ok-form').addClass('error-form');
$(this.parent().append(“”+无效的\u地址+“”);
}else if(validateAddress($(this.val())){
if(!$(this).val().match(/\d+/)){
if(!$(this.parent().find('.warningsmall').length)
$(this.parent().append(“”+街道号码\警告+“”);
}否则{
$(this.parent().find('.warningsmall').remove();
}
$(this).removeClass('error-form').addClass('ok-form');
}
});

该块中的最后一行删除错误表单类,并将OK表单类添加回来,使您试图添加的行实质上是一个no op:

else if(validateAddress($(this.val())){
if(!$(this).val().match(/\d+/)){
//我们试着交换课程
$(this).removeClass('ok-form').addClass('error-form');
if(!$(this.parent().find('.warningsmall').length)
$(this.parent().append(“”+街道号码\警告+“”);
}否则{
$(this.parent().find('.warningsmall').remove();
}
//此行撤消类更改
$(this).removeClass('error-form').addClass('ok-form');
}
事实上,如果您在调试器中单步执行代码,您将看到类切换,然后在到达块末尾时切换回

如果您不熟悉调试器的使用,我强烈建议您研究它,因为它在遇到以下问题时会有很大帮助:

  • Chrome调试器指南:(具体来说,查看“暂停调试器”部分)

有很多方法可以解决这个问题。一种方法是在该块中保留一个布尔值,然后根据其最后的值设置类:

else if(validateAddress($(this.val())){
让isErrorState=false;
if(!$(this).val().match(/\d+/)){
isErrorState=true;
if(!$(this.parent().find('.warningsmall').length)
$(this.parent().append(“”+街道号码\警告+“”);
}否则{
$(this.parent().find('.warningsmall').remove();
}
//交换类
如果(isErrorState){
$(this).removeClass('ok-form').addClass('error-form');
}
否则{
$(this).removeClass('error-form').addClass('ok-form');
}
}

谢谢,这就成功了。还感谢您提供使用调试器指南的建议。