Вызов функции виджета JQuery из form.submit

Я пытаюсь вызвать публичный метод моего jquery виджета api из form.submit, но у меня нет успеха. Может кто-нибудь мне помочь?

_cleanFormFields: function() {
  console.log("ok");
},

_addFormListener: function(map, marker) {
    var form = $(".add-form").clone().show();
    form.submit(function (event){
       event.preventDefault();
       _cleanFormFields();
    }
}           

Почему это не работает?? Консоль браузера выдает исключение "Uncaught ReferenceError: _cleanFormFields не определено"

1 ответ

Решение

_cleanFormFields это свойство какого-то объекта, верно? Так что вы не можете вызвать его напрямую, вам нужно ссылаться на него через ваш объект:

yourObject._cleanFormFields();

Или, в зависимости от того, как _addFormListener() вызывается вы могли бы использовать this, Но вам нужно сохранить ссылку на this от _addFormListener() потому что в .submit() Перезвоните this будет рассматриваемый элемент формы:

_addFormListener: function(map, marker) {
    var form = $(".add-form").clone().show(),
        self = this;
    form.submit(function (event){
       event.preventDefault();
       self._cleanFormFields();
    }
}
Другие вопросы по тегам