2013-07-29 22 views
1

我在網站的一個頁面上開發了一個非常簡單的Backbone應用程序,並且遇到了窗體問題。主幹窗體,逃生

我有一個列表(項目的集合),當我點擊一個項目的名稱,它被替換爲一個窗體。

當我編輯名稱,然後按ENTER它工作正常,但我沒有找到解決: - 逃脫形式,如果我按「ESC」鍵或更好的,其他地方 在頁面上 - 救我項目,當我按下輸入,當我沒有修改文字。

現在,當我點擊一個項目並加載表單時,我不得不更改名稱,然後按回車,如果我想退出for。

這裏是我的編輯表單骨幹觀點:如果有人已經實現了,我會很感激有一個例子

var EditForm = Backbone.View.extend({ 
    model: Item, 
    template: _.template('<form>' + 
     '<input name=name value="<%= name %>" />' + 
     '</form>'), 
    events: { 
     submit: 'save' 
    }, 
    save: function(e){ 
     e.preventDefault(); 
     var newName = this.$('input[name=name]').val(); 
     this.model.set({name: newName}); 
     this.model.save(); 
    }, 
    render: function(){ 
     this.$el.html(this.template(this.model.attributes)); 
     return this; 
    } 
}); 

謝謝

回答

0

你需要對你的看法是「KEYUP」處理,並檢查在其處理的鍵碼。類似以下內容:

//modify your events object like this 
events:{ 
    submit: "save", 
    "keyup": "checkAndHandleCancel" 
} 

//handler 
checkAndHandleCancel: function(e){ 
if (e.keyCode == 27) { 
    //handle your cancel action here 
} 
} 

請記住,這隻有在焦點在表單上時纔有效。如果你需要處理全局「取消」,你需要在文檔上有一個類似的「keyup」處理程序,然後將該事件傳播到你的視圖。

+0

非常感謝!我曾嘗試過這樣的一些東西,但不會奏效。你的例子是完美的。 –

+1

很高興它爲你工作!謝謝! –