Как преобразовать повторяющийся блок кода в функцию - PullRequest
0 голосов
/ 12 мая 2011

У меня есть последовательность кода, которая будет выполняться для большинства элементов ввода в контактной форме;ради строк кода, я хочу, чтобы это работало как функция.Вот пример блока:

$('#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 голосов
/ 12 мая 2011

Попробуйте изменить его так, чтобы вы вызывали свою функцию следующим образом:

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);
        }
    });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...