#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')]); });
Комментариев нет:
Отправить комментарий