关于表单元素动态增长的JQuery Tools验证器错误

时间:2011-02-25 11:42:13

标签: javascript jquery-validate jquery-tools

function testOptionalFieldsValidation(el){
    group = getGroup(el);
    return validateGroup(group);
}

function getGroup(el){
    return $(el).parents('.field');
}

function validateGroup(group){
    var count = 0;
    $(group).find("input[type!='hidden'], select").each(function(){
        if( $(this).val() )
            count++;
    });
    if($(group).find("input[type!='hidden'], select").length == count || count == 0)
        return true;
    else
        return false;
}

$.tools.validator.fn(
    $("#addressInfo .field select, #addressInfo .field input[type!='hidden']"),
    "Please Complete this mandatory field",
    function(el, v){
        if( !testOptionalFieldsValidation(el) && ($(el).val().length == 0 ) )
            return false;
        else
            return true;
    }
    );


$('#addressInfo div.links .add').live('click',function(){
    $('form').data('validator').destroy();
    $('form').validator().bind("onBeforeFail", function(e, els) {
        els.css('border','1px solid #F00');
        if (!els.is(':visible') ) {
            els.css('border','1px solid #F00');
            els.css('width', els.next().width());
            els.css('top', els.next().position().top + 1);
            els.css('left', els.next().position().left + 6);
            els.css('visibility', 'hidden');
            els.css('position', 'absolute');
            els.css('display', 'block');
            els.next().bind('blur', function() {
                els.trigger('keyup');
            });
        }
    });
    $.tools.validator.fn(".select .required", function(input, value) {
        return value.length >= 1 ? true : {
            en: "Please select this Mandatory field"
        };
    });

});

正如你上面提到的,代码块$('#addressInfo div.links .add')。live('click',function()定义。我调用一个destruct for validator而不是construct,这样它就可以选择地址信息部分的字段块,只需单击每个块的加号锚点即可生成。比上面提到的步骤之后我甚至调用我自己的规则检查功能与验证器相关联以验证我的欲望字段。请帮助我。谢谢

1 个答案:

答案 0 :(得分:0)

我调用验证器构造函数来重新初始化所有内容。