2013-07-08 4 views
0

В приведенном ниже коде я не вижу предупреждения, когда я нажимаю на гиперссылку или в том случае, когда текстовое поле пуст. Что я делаю не так?backbone.js проверка и гиперссылка нажмите

<a href="#" class="but" id="next_btn">Next</a> 
<input name="text" class="but" id="newcampaign" /> 

CM.Views.newCampaign = Backbone.View.extend({ 

    validate : function() { 
    if ($("#newcampaign").val() == "") { 
     alert("Enter campaing name"); 
    } 
    }, 

    initialize : function() { 
    _self=this 
    this.campaign = new Campaign(); 
    this.campaign.url='js/editdata.json'; 
    }, 

    events:{ 
    'onclick #next_btn': 'submit_form' 
    }, 

    submit_form : function(){ 
    alert("here"); 
    }, 
}); 
+1

Событие 'click', а не' onclick' –

+0

моя ошибка, а как насчет части проверки? – Rajeev

+0

Я добавил возможную проверку, пожалуйста, разверните свой вопрос, если вам нужна более подробная информация. –

ответ

2

Вместо того чтобы делать это

events:{ 
    'onclick #next_btn': 'submit_form' 
}, 

вы должны использовать

events:{ 
    'click #next_btn': 'submit_form' 
}, 

, так как название события является click не onclick. Кроме того, помните, что если вы хотите изменить поведение якоря, как вы делаете, вы должны вызвать preventDefault на событии, как этот

submit_form : function(e) { 
    e.preventDefault(); 
    alert("here"); 
}, 

на аргументе: https://developer.mozilla.org/en-US/docs/Web/API/event.preventDefault

Для проверки:

events:{ 
    'click #next_btn': 'validate' 
}, 
validate: function(e) { 
    e.preventDefault(); 
    if ($(this).val() == "") { 
    alert("Enter campaign name"); 
    } else { 
    // you should give the following instruction a url to navigate to 
    Backbone.history.navigate(url, true); 
    } 
}, 
+0

K i использовал e.preventdefault со своим вторым решением, и он не будет перенаправлен, если текстовое поле пуст, но если текстовое поле не пустое, оно не маршрутизируется. – Rajeev

+0

Это потому, что вы 'preventDefault'ed, вы должны использовать« Backbone ». history.navigate (url, true) 'с' url' вашего выбора для навигации. –

+0

Да, см. Мой отредактированный ответ. –

0

Backbone не процесс проверки для Views, вы должны запустить функцию проверки по своему усмотрению, может быть, от submit_form, или использовать некоторые plugins для Backbone (например, https://github.com/powmedia/backbone-forms).

+0

это должно работать даже в моем случае правильно ??? http://jsfiddle.net/simax/bEqnZ/ – Rajeev

+0

@ Rajeev ваша скрипка не работает ... –

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