如何将重复的代码块转换为函数

时间:2011-05-12 14:08:23

标签: javascript jquery function

我已经为联系表单中的大多数输入项运行了一系列代码;为了代码行,我想让它作为一个函数运行。以下是该块的示例:

$('#country_code').blur(function() {
var countryCode = $('#country_code').val();
    if(validateNumber(countryCode) == true) {
        if(countryCode.lastIndexOf('+') != 0) {
            countryCode = countryCode.replace('+', '');
            $('#country_code').val('+' + countryCode);
        }
    }
    else {
        countryCode = '';
        $('#country_code').val(countryCode);
    }
});

我想创建一个如下函数:

function validateElements(elementName, variableName, validationFunction, indexValue, indexPosition) {
    $(elementName).blur(function() {
        var variableName = $(elementName).val();
        if(validationFunction(variableName) == true) {
            if(variableName.lastIndexOf(indexValue) != indexPosition) {
                variableName = variableName.replace(indexValue, '');
                $(elementName).val(indexValue + variableName);
            }
        }
        else {
            variableName = '';
            $(elementname).val(variableName);
        }
    });
}

我在其中调用如下函数:

validateElements('#country_code', 'countryCode', 'validateNumber', '+', 0);

1 个答案:

答案 0 :(得分:0)

尝试更改它,以便按以下方式调用您的函数:

validateElements($('#country_code'), 'countryCode', 'validateNumber', '+', 0);

改变你的职能:

function validateElements(obj, variableName, validationFunction, indexValue, indexPosition) {
    obj.blur(function() {
        var variableName = obj.val();
        if(validationFunction(variableName) == true) {
            if(variableName.lastIndexOf(indexValue) != indexPosition) {
                variableName = variableName.replace(indexValue, '');
                obj.val(indexValue + variableName);
            }
        }
        else {
            variableName = '';
            obj.val(variableName);
        }
    });
}