Javascript 在ModalBox中使用haml或erb代码会导致无法调用后加载回调

Javascript 在ModalBox中使用haml或erb代码会导致无法调用后加载回调,javascript,ruby-on-rails,modal-dialog,Javascript,Ruby On Rails,Modal Dialog,我打开一个ModalBox,其中包含: =link_to_function "Add", "Modalbox.show('appt', {title: this.title, width: 600, height: 400, afterLoad: function() { alert('Content loaded') } });" 这将加载一个haml文件。当haml文件包含某些代码时,将永远不会触发回调。实际上,在.erb文件中也会发生同样的情况 例如,当文件包含以下内容时,将触发回调:

我打开一个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 %>
我还没有真正了解原因,但因为它只是试图将焦点设置在第一个找到的元素上,所以我只是注释掉了“this.\u setFocus();”这一行在“_putContent”中


我仍然很好奇,如果有人知道的话,为什么会出现上述情况。

您不能为模式的第一个字段设置一个tabIndex属性为“1”吗

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

1 %>

我也有同样的问题,你的帖子非常有用! 我还发现第361行导致了错误。 我将其修改为:
“如果(firstEl)firstEl.focus();”

现在IE8给出了一条错误消息,并给出了一些解释: 错误:无法将焦点移动到控件,因为该控件不可见、未启用或其类型不接受焦点

如果元素不在显示器上,IE可能无法将其设置为焦点。我的猜测是,在焦点被设定的时刻,元素确实仍然隐藏着。 不过,FF似乎处理得更好


因此,对于我的解决方法,我对第361行进行了注释,现在它似乎可以工作了。

当然,这可能会与正在崩溃的代码做同样的事情,但我更好奇的是,为什么代码会崩溃。我不喜欢编辑第三方代码b/c,如果我去更新它,但错误仍然没有修复,那么我必须发现、记住并重新修复错误。谢谢,是的,你的想法对那些需要解决焦点问题的人来说是很好的。
<% form_for(:appointment) do |f| %>
  <%= f.error_messages %>
  <%= f.submit 'Update', :tabindex => 1 %>
<% end %>