Событие отправки формы не срабатывает

Разрабатываю первое магистральное приложение RESTfull. У меня такая точка зрения:

var app = app || {};

app.AssessorsCollectionView = Backbone.View.extend({
    el: '#assessors',
    tagName: 'table',

    events:{
        "submit form": "searchAssessors"
    },

    initialize: function() {
        this.collection = new app.AssessorsCollection();
        this.collection.fetch({reset: true, data: $.param({ online: false}) });
        this.render();

        this.listenTo( this.collection, 'reset', this.render );
    },

    render: function() { /// },

    renderRegion: function( item ) { /// },

    searchAssessors: function( e ) {
        e.preventDefault();

        this.collection.remove();

        console.log("EVENT");
    }
});

Это моя HTML-форма:

<form id="form-search-assessors" class="form-horizontal" role="form">
    .........

    <input id="search-assessors-button" class="btn btn-lg btn-success btn-block" type="submit" value="Search" />
    <!--<button id="search-assessors-button" class="btn btn-lg btn-success btn-block" type="submit">Search</button>-->
</form>

Я поставил точку останова на searchAssessors, но она не работает. Кроме того, я не вижу сообщений в консоли.


person Denis    schedule 24.10.2014    source источник


Ответы (3)


Попробуйте изменить событие на "submit #form-search-assessors": "searchAssessors".

person soulprovidr    schedule 24.10.2014
comment
К сожалению, мне это не помогает. Мой обработчик не работает. - person Denis; 24.10.2014

Вы инициализировали представление?, Поскольку это всего лишь фрагмент вашего кода, я удалил пару вещей и комментариев, это должно сработать.

Спасибо

HTML

<div id="assessors">
    <form id="form-search-assessors" class="form-horizontal" role="form">
       <input id="search-assessors-button" class="btn btn-lg btn-success btn-block" type="submit"            value="Search" />
   </form>
<div>

JS

AssessorsCollectionView = Backbone.View.extend({


    el: '#assessors',
    tagName: 'div',

    events:{
        'submit form': 'searchAssessors'
    },

    initialize: function() {
        this.render();
    },

    render: function() {  },

    searchAssessors: function( e ) {
        e.preventDefault();
        console.log('EVENT');
    }

});

view = new AssessorsCollectionView();
person Arturo Soto    schedule 24.10.2014
comment
да. У меня есть файл app.js, в котором я пишу: new app.AssessorsCollectionView (); - person Denis; 24.10.2014
comment
К сожалению, в разделе оценщиков этой формы нет. Поэтому ваш пример мне не подходит. - person Denis; 24.10.2014
comment
Собственно это не мой пример, это ваш пример. Я попытался дать небольшую структуру, чтобы оказать некоторую помощь, так как это не будет работать как есть, вы думаете, как renderRegion: function (item) {///}, что приведет к ошибке. Вот пример, работающий, если вы хотите взглянуть. jsfiddle.net/arturo_pst/4vz1ogw9/4 - person Arturo Soto; 24.10.2014
comment
К сожалению, это не работает, потому что средства оценки тегов не содержат средства оценки поиска форм. - person Denis; 24.10.2014
comment
Итак, вы пытаетесь добавить события к элементам вне представления (el)? - person Arturo Soto; 24.10.2014
comment
Ага, теперь я пытаюсь это делать. - person Denis; 24.10.2014

Решение моей проблемы:

$( "form#form-search-assessors" ).submit($.proxy(function(e) {
    e.preventDefault();
    console.log(this);

    this.collection.fetch({reset: true, data: $.param({ online: true}) });
    this.render();
}, this));

Источник: https://stackoverflow.com/a/9813760/1756750

person Denis    schedule 24.10.2014