所以,我正在使用Facebox 1.3(最新版)
我用这样的链接调用facebox:
<a href="#dialog" class="comment action_button" rel="facebox">comment</a>
#dialog
是一个看起来像这样的div:
<div id="dialog" class="dialog" style="display: none">
<form id="redline_form">
<textarea id="suggested_text" name="suggested_text" style="width: 100%; height: 250px;"></textarea>
<br>
<!-- submit button here -->
</form>
</div>
所以,我读到当facebox将div加载到自身时,它会克隆DOM元素。这没关系,除了我的提交按钮实际上是AJAX调用,它也通过表单的ID提交表单。并且由于ID不再是唯一的,它提交原始表单,而不是facebox(您可以通过向选择器添加#facebox
来获取)。
我如何制作它以使表单保持唯一且不会被克隆。或者,有一种方法可以在Ruby on Rails的link_to_remote中指定表单ID吗?
<%= link_to_remote "Submit Comment",
:url => { :action => :create_redline_comment_or_change,
:commit => "Submit Comment" },
:submit => "redline_form",
:html => {:id => "comment_submit"} %>
这里使用:submit参数,我尝试做#facebox #redline_form,但它不知道如何解释它。 (没有请求发送到服务器)。它现在的方式是,它向服务器发送请求,但它发送非facebox表单。 = \
使用Rails 2.3.8
此处显示的工作流程的相关Javascript:
jQuery(".comment").click(function(){
$j("div#rl_menu").fadeOut(100);
$j(".original_text").html('' + $selected_text);
$j("textarea#suggested_text").html("Enter your comment(s) then click submit.");
$j("#comment_submit").show();
$j("#change_submit").hide();
form = $j("#facebox #redline_form_fake");
form.attr("id", "redline_form");
form.attr("name", "redline_form");
field = $j("#facebox #redline_form #suggested_text_fake");
field.attr("id", "suggested_text");
field.attr("name", "suggested_text");
});
编辑:添加了应该更改facebox中表单元素的ID的代码,但它不起作用。
答案 0 :(得分:0)
我的解决方案:是代替加载已经在页面上的div(得到克隆,并导致具有相同ID的多个元素的问题),将表单放入部分,并将该部分加载到facebox。
对于非web-appers,它只是加载包含div的URL。 = d
答案 1 :(得分:0)
我正在使用Facebox 1.3和jQuery Validation Plugin,并且有一个表单可以创建一个带有表单的新用户。
<a onclick="jQuery.facebox({ ajax: 'includes/cuser_form.inc' })"
我遇到了同样的问题并尝试了你的方法TheLindyHop,(首先没有尝试替换表单的id和名称,这对我不起作用,因为字段元素需要具有特定的名称才能将这些值输入到DB,..需要保留这些字段的名称和id。否则,如果这不是关键,当Facebox克隆元素时,你可以以某种方式检测输入元素..你需要检查哪个版本op正在使用)并且它的工作方式就像一个魅力..所以基本上我包含一个.inc文件与表格的div内容..并在使用这种方法但没有href(尝试href =“javascript:void(0) ;” 然后删除它并做同样的事情,这似乎是正确答案..需要用AJAX完成)