【问题标题】:one input class, only modify empty ones一个输入类,只修改空类
【发布时间】:2012-07-12 18:41:07
【问题描述】:

我有这段代码,如果有一个空的,所有名为“inputix”的输入字段都有一个红色边框,我只想更改那些为空的:

html部分http://pastebin.com/4kyv8dLD

for (i=0;i<required.length;i++) {
    var input = $('#'+required[i]);
    if ((input.attr('value') === "") || (input.val() === emptyerror)) {
        input.addClass("needsfilled");
    } else {
        input.removeClass("needsfilled");
    }
}

if (!/^([a-zA-Z0-9_.-])+@(([a-zA-Z0-9-])+.)+([a-zA-Z0-9]{2,4})+$/.test(email.val())) {
    email.addClass("needsfilled");
    email.val(emailerror);
}


if ($(":input").hasClass("needsfilled")) {
    i=0;
    $('.inputix').css('border','solid 1px red');
    for (i=0; i<5; i++){
        $('.inputix'+[i]).css('border','solid 1px red');
    }
    return true;
}

问题是只希望空的有红色边框...

【问题讨论】:

    标签: javascript jquery if-statement for-loop


    【解决方案1】:

    没有必要使用for循环,你可以使用start with选择器:

    选择具有指定属性且值恰好以给定字符串开头的元素。

    $('input[class^="inputix"]').css('border','solid 1px red')
    

    作为替代方案,您可以使用 each 循环:

    $('form').submit(function(){
        $('input').each(function(){
            if (this.value == '') {
               $(this).addClass('error')
            } else {
                $(this).removeClass('error')  
            }
        })
    
        if ($('input.error').length > 0) {
            return false
        }           
    })
    

    DEMO

    【讨论】:

    • 不明白,第一个for循环检查是否有任何字段为空第二个for循环,运行所有不同的inputix类,inputix1,inputix2,inputix3,因为我改变了输入css,他们不一样
    • @Souza 好的,你可以使用start with 选择器,试试更新后的答案。
    • 现在说得通了!非常感谢你。但仍然是所有字段都为红色而不是空字段的问题
    • @Souza 不客气,你试过 jQuery each 方法吗?
    • @Souza 使用each 方法将简化您正在执行的任务,您可以发布 html 吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-11
    • 1970-01-01
    相关资源
    最近更新 更多