2014-11-17 30 views
2

我使用Bootstrap X-editable來讓人們對他們的個人資料進行內嵌編輯。用戶可以編輯的其中一項功能對另一種可編輯功能有影響。如果可編輯A(一年)設置爲當年,則用戶有義務在可編輯B(特定稅率)中做出決定。如何觸發一個新的X-Editable從現在的成功功能打開?

所以是可編輯year可編輯的選項如下:

$('#year').editable({ 
    pk: 1, 
    success: function(response, newValue){ 
     if (newValue == 2014){ 
      $('#tax_rate').trigger('click'); 
     } else { 
      $('#tax_rate').html(2); 
     } 
    } 
}); 

EXAMPLE FIDDLE HERE

此行爲罰款,除了2014年,在其確實發佈了正確的值後端,然後確實點擊/打開#tax_rate,但不知何故,點擊可防止新年在#year中正確顯示。如果我刷新頁面,年份將再次正確顯示,但只是在我嘗試觸發其他可編輯時,它在保存後不會正確顯示年份。只需嘗試打開the fiddle並將年份更改爲2014年即可瞭解我的意思。

那麼有誰知道我如何在DOM中更新新的一年,並點擊/打開tax_rate可編輯?歡迎所有提示!

回答

4

我建議你異步UI交互:

像這樣:

$('#year').editable({ 
    pk: 1, 
    success: function(response, newValue){ 
     if (newValue == 2014){ 
      setTimeout(function(){ 
      $('#tax_rate').trigger('click'); 
      }, 0); 
     } else { 
      $('#tax_rate').html(2); 
     } 
    } 
}); 

它應能正常工作,我覺得

添加
您也可以觸發click事件vanillaJS框架使用。
我認爲$.trigger會導致一些UI更新錯誤。
很簡單:

document.getElementById('tax_rate') 
    .dispatchEvent(new Event('click')); 
+0

你需要一些額外的信息?我增加了另一種解決方法。 –

+0

太棒了,確實有效!儘管現在已經解決了,你會碰巧知道*爲什麼* X-Editable的行爲像這樣? – kramer65

+0

這看起來很神奇:)我覺得這裏的實施很差。就像硬編碼超時更新不可見元素一樣。 –