以下是该方案:
我在网页上有一个文本框和一个按钮。单击该按钮时,我想要打开一个弹出窗口(使用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页面将使用会话变量进行搜索。但是,这有点不稳定,因为在设置会话变量之前似乎总是存在搜索执行的可能性。
答案 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");