#javascript #jquery
Здравствуйте!
Скажите, пожалуйста, как можно исправить вот такую ошибку: Uncaught TypeError: y
is not a function
function test($t, y) {
y($.trim($($t).val()));
}
function validateTest(z){
alert(z);
}
$('.requed').on('change', function() {
test('#'+$(this).attr('id'), 'validate'+$(this).attr('data-var'));
});
Я так понимаю ошибка возникает при попытке вызова значения как функции. Мне же нужно
именно так. Полей у меня множество и исходя из значения ('validate'+значение из data-var)
пришедшего из поля, будет вызываться определенная функция.
Ответы
Ответ 1
В зависимости от контекста исполняемой функции. Если все находится в контексте window, то можно написать так: function test($t, y) { var func = window[y]; func($.trim($($t).val())); } function validateTest(z){ alert(z); } $('.requed').on('change', function() { test('#'+$(this).attr('id'), 'validate'+$(this).attr('data-var')); });В ином случае нужно заменить window на имя объекта-предка, содержащего эту функцию
Ответ 2
function test($t, y) { y($.trim($t.val())); } var validators = { Test: function validateTest(z) { console.log(z); } } $('.requed').on('change', function() { test($(this), validators[$(this).attr('data-var')]); });
Комментариев нет:
Отправить комментарий