2013-09-12 2 views
1

Я создал функцию validateName, она работает, когда я звоню name.validateName(); которое называется var name = $("#name");мое событие фокуса для вызова функции не работает

Как мне связать его вместе с событием фокуса? Я хочу, чтобы функция для выполнения, если поле ввода focusout ..

Я пробовал:

$(name).on('focusout', function(){ 
$(this).validateName(); 
)}; 

не работает ..

+0

Я думаю, $ («# имя») является элементом, а не селектор – Horst

+0

есть какая-либо ошибка в консоли –

+0

также, что 'validateName' и как он объявлен –

ответ

1

$ (имя) приведет к $ ($ ('# имя «)) в вашем случае:

$(name).on('focusout', function(){ 
    validateName($(this).val()); 
)}; 

Должно быть, как это

name.on('focusout', function(){ 
    validateName($(this).val()); 
)}; 
+1

это нормально ... он все равно возвращает тот же объект –

+0

Спасибо за это @ArunPJohny, узнайте что-то новое. –

+0

Объект [объект Объект] не имеет метода 'validateName' –

0

это выглядит как проблема контекста для меня

Из того, что я могу понять validateName функция в объекте оберточной и внутри обработчика событий this указывает на йот элемент не к внешнему объекту.

var self = this; 
$(name).on('focusout', function(){ 
    self.validateName(); 
)}; 
+0

Я не понимаю это. –

+0

Объект # не имеет метода 'validateName' –

0

Вы пробовали что-то вроде этого?

var name = $("#name"); 

function validateName(item) { 
//do your validation here. 
} 

name.focusout(function() { 
    validateName(name); 
}); 

Надеюсь, что это поможет.

+0

validateName (name.val()); <- эта работа .. но почему даже я не предоставляю параметр для функции, она по-прежнему работает? –

Смежные вопросы