2

我为“keyup-an”类提供了一个简单的 keyup 函数,用于在表单上进行 keyup 验证。这个类大约有 10 个字段。但是在发布之后,我在表单中添加了字段。但是绿色和红色的背景消失了,因为它不是键控。我该如何做这样的事情,每一个都将根据页面加载时的结果为背景着色

jQuery(document).ready(function() {

$('.keyup-an').each(function(index) {

    var inputVal = $(this).val();
    var numericReg = /^[a-zA-Z0-9_ ]{2,30}$/;
    if(!numericReg.test(inputVal)) {
        $(this).css('background', '#FAC3C3');
        $(this).after('<span class="error error-keyup-1">Please use letters or numbers only</span>');
    } 
    else {
        $(this).css('background', 'lightgreen');
    }
});


$('.keyup-an').keyup(function() {
    $('span.error-keyup-1').hide();
    var inputVal = $(this).val();
    var numericReg = /^[a-zA-Z0-9_ ]{2,30}$/;
    if(!numericReg.test(inputVal)) {
        $(this).css('background', '#FAC3C3');
        $(this).after('<span class="error error-keyup-1">Please use letters or numbers only</span>');
    } 
    else {
        $(this).css('background', 'lightgreen');
    }
});
4

3 回答 3

2

我想这就是你想要的..

$(document).ready(function() {
    // Each
    $('.keyup-an').each(function() {
        // Validate
        validate(this);
        // Key up
        $(this).keyup(function(){
            // Validate
            validate(this);
        });
    });
});


// Validate Function
function validate(element) {
    var obj = $(element);
    if(!/^[a-zA-Z0-9_ ]{2,30}$/.test(obj.val())) {
        // Invalid
        obj.css('background', '#FAC3C3');
        if(!obj.next().hasClass('error'))
        { obj.after('<span class="error error-keyup-1">Please use letters or numbers only</span>'); }
    } else {
        // Valid
        obj.css('background', 'lightgreen');
        if(obj.next().hasClass('error'))
        { obj.next().remove(); }
    }
}

演示:http: //jsfiddle.net/BerkerYuceer/q2ajM/

于 2012-10-24T07:46:27.503 回答
1
$('.keyup-an').each(function(index) {

    var inputVal = $(this).val();
    var numericReg = /^[a-zA-Z0-9_ ]{2,30}$/;

    if(!numericReg.test(inputVal)) {
        $(this).css('background', '#FAC3C3');
        $(this).after('<span class="error error-keyup-1">Please use letters or numbers only</span>');
    } 
    else {
        $(this).css('background', 'lightgreen');
    }
});
于 2012-10-24T05:04:26.300 回答
0

你应该像这样定义你的 keyup 事件。顺便说一句,如果您的元素表单是动态创建的,则必须使用.on()绑定事件

jQuery(document).ready(function() {

$('.keyup-an').each(function(index) {
    $(this).keyup(function() {
        var inputVal = $(this).val();
        var numericReg = /^[a-zA-Z0-9_ ]{2,30}$/;
        if(!numericReg.test(inputVal)) {
            $(this).css('background', '#FAC3C3');
            $(this).after('<span class="error error-keyup-1">Please use letters or numbers only</span>');
        } 
        else {
            $(this).css('background', 'lightgreen');
        }
    });
});
}
于 2012-10-24T05:12:21.837 回答