Я открываю ModalBox с:
=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 %>
Есть какие-нибудь подсказки?
EDIT:
Я сузил его, и он нарушает этот код в modal.js:
var firstEl = this.focusableElements.find(function findFirst(el){
i++;
return el.tabIndex == 1;
}) || this.focusableElements.first();
На самом деле не задумывался, почему, но поскольку он просто пытается установить фокус на первом найденном элементе, я просто закомментирую строку 'this._setFocus ();' в '_putContent'.
Мне все еще любопытно, почему это происходит в случае, упомянутом выше, если кто-то знает.