有没有办法将Thickbox与动态内容一起使用?

时间:2008-11-03 02:28:12

标签: asp.net jquery thickbox

以下是该方案:

我在网页上有一个文本框和一个按钮。单击该按钮时,我想要打开一个弹出窗口(使用Thickbox),该窗口将显示与文本框中输入的值匹配的所有项目。我目前正在使用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网址,但我似乎无法弄清楚如何做到这一点。我目前的替代方法是使用jQuery设置“搜索”按钮的单击功能,以调用将在ASP.NET会话中设置某些值的Web服务。然后,Search.aspx页面将使用会话变量进行搜索。但是,这有点不稳定,因为在设置会话变量之前似乎总是存在搜索执行的可能性。

4 个答案:

答案 0 :(得分: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');
}

答案 1 :(得分:2)

如果您阅读手册,请在iframe内容部分下方告知您参数需要在TB_iframe参数之前进行。在此之后的一切都被剥夺了。

答案 2 :(得分: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标记。相反,您也可以听取击键并在每一个之后更新。

就更新查询字符串而言,我会让你找出最好的方法。我可以看到在那里放置一个占位符:&amp; TB = TB_PLACEHOLDER。然后你可以做一个字符串替换。

答案 3 :(得分:0)

code-behind中,您还可以通过编程方式添加alt标记,

button1.Attributes.Add("alt", "Search.aspx?KeepThis=true&TB_iframe=true&height=500&width=700");