2013-07-08 120 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我用e.preventdefault與你的第二個解決方案,它不會重新定向,如果文本框是空的,但如果文本框不是空的,它不會路由.. – Rajeev

+0

這是因爲你'preventDefault'ed,你應該使用'Backbone。 history.navigate(url,true)'用你選擇的'url'導航。 –

+0

是的,請參閱我編輯的答案。 –

0

骨幹不具備查看驗證過程中,你必須從submit_form在自己的運行驗證功能,也許,或使用一些plugins骨幹(如https://github.com/powmedia/backbone-forms)。

+0

這應該工作,即使在我的情況下? http://jsfiddle.net/simax/bEqnZ/ – Rajeev

+0

@Rajeev你的小提琴不工作... –