2010-06-28 53 views
0

我打開一個ModalBox有:使用HAML或ModalBox ERB代碼導致後負荷回調不會被調用

=link_to_function "Add", "Modalbox.show('appt', {title: this.title, width: 600, height: 400, afterLoad: function() { alert('Content loaded') } });" 

此加載HAML文件。當haml文件包含某些代碼時,回調永遠不會被觸發。 .erb文件也是如此。

例如,當該文件包含回調被觸發:

<% form_for(:appointment) do |f| %> 
    <%= f.error_messages %> 
<% end %> 

但是當它不包含:

<% form_for(:appointment) do |f| %> 
    <%= f.error_messages %> 
    <%= f.submit 'Update' %> 
<% end %> 

任何線索?

編輯:

我縮小它和它打破這個代碼modal.js:

var firstEl = this.focusableElements.find(function findFirst(el){ 
    i++; 
    return el.tabIndex == 1; 
}) || this.focusableElements.first(); 

還沒有真正調查原因,但由於它只是試圖設置焦點在第一個找到的元素上,我只是註釋掉'this._setFocus();'這一行在'_putContent'中。

我仍然好奇,爲什麼在上述情況下突破,以防萬一誰知道。

回答

0

難道你不能僅僅爲模態的第一個字段設置tabIndex屬性爲「1」嗎?

<% form_for(:appointment) do |f| %> 
    <%= f.error_messages %> 
    <%= f.submit 'Update', :tabindex => 1 %> 
<% end %> 
+0

當然,這可能會和破壞的代碼做同樣的事情,但我更加好奇它爲什麼破壞代碼。我不喜歡編輯第三方代碼b/c,如果我去更新它,並且錯誤仍然沒有解決,那麼我必須發現,記住並重新編譯錯誤。不過謝謝,是的,對於那些需要解決焦點問題的解決方案,您的想法非常有用。 – 99miles 2010-06-29 16:35:40

1

我有同樣的問題,你的文章是非常有幫助的! 我還發現,第361行會導致錯誤。 我修改爲: "if (firstEl) firstEl.focus();"

現在IE8給出了一點解釋的錯誤消息: 「錯誤:無法將焦點移到控制,因爲它是無形的,未啓用,或類型的那不接受重點。「

如果它不在顯示器上,可能IE不能將焦點設置到元素上。而且我的猜測是,目前正在設定焦點,因此元素確實仍然隱藏着。 雖然看起來FF更好。

因此,對於我的解決方法,我評論了第361行,現在似乎工作。

相關問題