在我的Web应用程序中,我需要一个功能,以便当用户单击文本框输入值时,它应该使按钮和其他字段可见吗?
我正在使用下面提供的代码,但无法使其正常工作。
C#:
protected void TextBox1_Click(object sender, EventArgs e)
{
ButtonSearch.Visible = true;
}
ASP.Net:
<asp:TextBox ID="TextBox1" runat="server" OnTextChanged="TextBox1_TextChanged" OnClick="TextBox1_Click"></asp:TextBox>
<asp:Button ID="ButtonSearch" runat="server" OnClick="ButtonSearch_Click" Text="Search" Visible="False" />
如何做到这一点?
由于
答案 0 :(得分:2)
设置AutoPostback="True"
。这样,事件将在服务器端触发,按钮将变为可见。
<asp:TextBox ID="TextBox1" runat="server" OnTextChanged="TextBox1_TextChanged" OnClick="TextBox1_Click" AutoPostBack="true"></asp:TextBox>
但是,如果你只想要一个按钮的屏幕,你真的应该考虑javascript。这将节省返回服务器的行程。
<asp:TextBox onclick="txtBox1_ClientClicked()" ID="TextBox1" runat="server" OnClick="TextBox1_Click"></asp:TextBox>
<asp:Button ID="ButtonSearch" runat="server" OnClick="ButtonSearch_Click" Text="Search" style="display:none;" />
<script type="text/javascript">
function txtBox1_ClientClicked(){
var theButton = document.getElementById('<%=ButtonSearch.ClientID%>');
theButton.style.display = 'block';
}
</script>
答案 1 :(得分:0)
[jQuery](http://jquery.com/)是您问题的完美解决方案。
代码将是这样的:
$("#TextBox1").on("click",function(){$("#ButtonSearch").css("visibility", "visible");})
您可以通过向网页添加<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
来添加脚本,然后将上面的代码添加到<script></script>
代码中。
希望这有帮助。
答案 2 :(得分:0)
您无需回发到服务器即可完成工作。例如,您可以使用客户端onFocus
事件和javascript / jquery。
我知道我使用了类型文本的输入,并且您正在使用在服务器上发布的ASP控件,但这里有一个JSFiddle可以让您走上正确的轨道:http://jsfiddle.net/Mmjtz/1/
答案 3 :(得分:0)
$("<%= ButtonSearch.ClientID %>").click(function(){
$("#TextBox1").show():
});
在此代码中,您需要传递要在单击按钮时显示的字段ID。
答案 4 :(得分:0)
将文本框放在div
内,然后使用代码隐藏中的div
onClick
事件。这不是你问的问题,但对我来说没有任何错误。以下是实现请求事件的javascript
函数:
function toggleVisibility()
{
document.getElementById('TextBox1').disabled = true;
/*
...some other code...
*/
}
当然,在实现此JS函数后,您必须在onclick
定义中定义div
事件。
<div id="TBdiv" onClick="toggleVisibility()">
<asp:TextBox ID="TextBox1"..../>
</div>
重要提示:由于您现在已从代码隐藏中禁用了TextBox
,因此您必须先在某个位置启用它,然后才能再次使用它。否则在页面运行时你将看不到它。