6

这是场景:

我在网页上有一个文本框和一个按钮。单击按钮时,我希望打开一个弹出窗口(使用厚框),它将显示与文本框中输入的值匹配的所有项目。我目前正在使用Thickbox 的IFrame 实现。问题是要显示的 URL 被硬编码到按钮的“alt”属性中。我真正需要的是“alt”属性将文本框中的值传递给弹出窗口。

这是到目前为止的代码:

<input type="textbox" id="tb" />
<input alt="Search.aspx?KeepThis=true&TB_iframe=true&height=500&width=700" class="thickbox" title="Search" type="button" value="Search" />

理想情况下,我想将文本框值放入 Search.aspx url,但我似乎无法弄清楚如何做到这一点。我目前的替代方法是使用 jQuery 设置搜索按钮的单击功能,以调用将在 ASP.NET 会话中设置一些值的 Web 服务。然后 Search.aspx 页面将使用会话变量进行搜索。但是,这有点不稳定,因为似乎总是有可能在设置会话变量之前执行搜索。

4

4 回答 4

10

只需处理按钮的 onclick 即可运行调用 的函数,tb_show()并传递文本框的值。就像是

... onclick = "doSearch()" ...

function doSearch()
{
    tb_show(caption, 'Search.aspx?KeepThis=true&q=\"' +
            $('input#tb').val() +
            '\"&TB_iframe=true&height=500&width=700');
}
于 2008-11-03T04:52:40.960 回答
2

如果您阅读手册,在 iframe 内容部分下,它会告诉您您的参数需要放在 TB_iframe 参数之前。这之后的一切都被剥夺了。

于 2009-06-23T19:32:33.363 回答
0

这是一个想法。我认为它不是很漂亮,但应该可以:

$('input#tb').blur(function(){ 
  var url = $('input.thickbox').attr('alt');
  var tbVal = $(this).val();

  // add the textbox value into the query string here
  // url = ..

  $('input.thickbox').attr('alt', url);

});

基本上,每次文本框失去焦点时,您都​​会更新按钮 alt 标签。相反,您还可以收听击键并在每次击键后进行更新。

至于更新查询字符串,我会让你找出最好的方法。我可以看到在其中放置了一个占位符,例如:&TB=TB_PLACEHOLDER。然后你可以做一个字符串替换。

于 2008-11-03T03:16:25.147 回答
0

代码隐藏中,您也可以直接添加 alt 标签,

button1.Attributes.Add("alt", "Search.aspx?KeepThis=true&TB_iframe=true&height=500&width=700");
于 2009-03-25T11:20:29.037 回答