2011-03-04 152 views
0

希望在jeditable(使用gem「on_the_spot」)後更新頁面已更新。下面的工作更新頁面,但腳本運行後,一旦字段不再可更新jeditable。幫助Rails 3 js

的application.js

$('.on_the_spot_editing').change(function() { 
    $.getScript('edit.js'); 
}); 

edit.js.erb

$("#items .on_the_spot_editing").change(); 
$("#edit_order_form").html("<%= raw escape_javascript(render('form')) %>"); 

控制器

respond_to do |format| 
    format.html 
    format.js if request.xhr? 
end 

字段

<%= on_the_spot_edit item, :price %> 

編輯 -

$(document).ready(function(){ 
    $('.on_the_spot_editing').data('ok', 'Ok').live('click', function() { 
    // tried $.delay(800).getScript('edit.js'); 
    $.getScript('edit.js'); 
    }); 
}); 

EDIT 2 - 如果數據-OK = 「確定」 是HTML5標記,這會是正確的,看看用戶點擊 「確定」 按鈕?

$('.on_the_spot_editing').data('ok', 'Ok').live('click', function() { 
    setTimeout(getIt, 500); 
}); 

function getIt() { 
    $.getScript('edit.js'); 
} 

回答

0

的第一句話:我不明白爲什麼你裏面edit.js您需要重新觸發change事件?不應該創建一個循環?如果......哈哈!

由於您重新呈現表單,您將失去所有事件綁定。您應該使用live bindings。不幸的是jEditable不使用live綁定。大概是因爲它在編寫jEditable時不存在,其次,我推測,因爲如果您要使用JavaScript編輯單個字段,則不會再重新呈現完整的表單。

如果你仍然想重新渲染完整的表單,並且可能有這樣做的有效情況(代碼駐留在控制器上,請更新計數器/狀態/什麼不是):確保在您的form視圖中,您再次加載on_the_spot.js。這將重新啓用該表單。

希望這會有所幫助。

+0

確實如此。更新的腳本尋找「好」的數據attr。我遇到的問題是.getScript在jeditable提交給數據庫之前會被調用,所以直到下面的編輯纔看到更新。我已經嘗試.delay腳本和.js,但都沒有工作。你知道,如果jeditable有某種類型的回叫,我可以用它來觸發劇本,或者有什麼我可以做的嗎? – pcasa 2011-03-04 17:38:59

+0

添加了第二個編輯。這是正確的嗎? – pcasa 2011-03-04 18:43:51