0

在下面的代码中,当我单击超链接时,也没有在文本框为空的情况下看到警报。我究竟做错了什么?

<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");
  },
});
4

2 回答 2

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);
  }
},
于 2013-07-08T14:54:46.647 回答
0

Backbone 没有 View 的验证过程,您必须自己运行验证功能,可能来自submit_form,或使用 Backbone 的一些插件(如https://github.com/powmedia/backbone-forms)。

于 2013-07-08T14:58:08.957 回答