【发布时间】:2011-01-10 02:25:58
【问题描述】:
我最近一直在使用 Facebox,它似乎与 asp.net 不兼容。在这个论坛的帮助下,我解决了从文本框中检索值以及从面部框内的按钮捕获事件的问题。
现在,我偶然发现了另一个奇怪的问题。如果我用现有值填充面部框内的文本框,在打开面部框之前,打开面部框,更改一些值,点击从文本框中获取新值的按钮,获取的值是文本框的值在打开面框之前填充。
这是我的 .aspx 页面中的代码:
<a href="#facebox" rel="facebox">open facebox</a>
<div id="facebox" style="display: none;">
<p>
1: <span><asp:TextBox ID="txt_reason1" runat="server" Width="200" TextMode="MultiLine"
Rows="2"></asp:TextBox></span></p>
<p>
2: <span><asp:TextBox ID="txt_reason2" runat="server" Width="200" TextMode="MultiLine"
Rows="2"></asp:TextBox></span></p>
<p>
3: <span><asp:TextBox ID="txt_reason3" runat="server" Width="200" TextMode="MultiLine"
Rows="2"></asp:TextBox></span></p>
<asp:Button ID="Button2" runat="server" Text="Gem" OnClick="Button2_Click" />
</div>
然后在我的代码隐藏中,我在 facebox 中设置文本框(页面加载时),如下所示:(_goal 是一个业务对象)
txt_reason1.Text = _goal.GoalReason1;
txt_reason2.Text = _goal.GoalReason2;
txt_reason3.Text = _goal.GoalReason3;
然后我更改 .aspx 中的一些值并在事件处理程序中使用此代码点击按钮:
_goal.GoalReason1 = txt_reason1.Text;
_goal.GoalReason2 = txt_reason2.Text;
_goal.GoalReason3 = txt_reason3.Text;
bool res = GoalManager.UpdateGoal(_goal);
这几乎只是用文本框值设置一些对象属性,并用它更新数据库。但是,文本框的值没有改变,我使用调试器检查了它。我的猜测是,facebox 以某种方式否认要更改的文本框。我不知道,所以我希望这里有人知道更多关于facebox,甚至可能解决这个问题......
【问题讨论】:
-
你在使用 AJAX 做回调吗?还是传统的回传?这可能会对“可能”导致问题的 facebox 脚本的初始化产生影响......
-
嘿,我正在使用传统的回发。只是一个简单的按钮点击事件。
-
看起来,facebox 在加载时会创建自己的包含 id=facebox 的 DIV。所以,即使我给我的 facebox DIV 一个 id=facebox2,用户在浏览器中看到的也有一个 id=facebox。因此,如果用户更改了文本框的内容,提交的值就不是新的了。令人困惑....也许我可以让提交按钮调用一些javascript,从facebox“DIV-copy”中获取新输入的值,并以这些值作为参数调用页面方法,而不是让按钮直接回发?