如何在ASP.NET中实现文本框上的单击事件
本文关键字:单击 事件 文本 实现 ASP NET | 更新日期: 2023-09-27 18:03:05
在我的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" />
如何做到这一点?
设置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>
您不需要发布回服务器即可完成您的工作。例如,您可以使用客户端onFocus
事件和javascript/jquery。
我知道我使用了文本类型的输入,而你使用的是在服务器上发布的ASP控件,但这里有一个JSFiddle可以让你走上正轨:http://jsfiddle.net/Mmjtz/1/
$("<%= ButtonSearch.ClientID %>").click(function(){
$("#TextBox1").show():
});
在这段代码中,您需要传递您希望在单击按钮时可见的字段ID。
将文本框放在div
中,并使用来自codeehind的div
的onClick
事件。这不是你要求的,但它对我来说很有效,没有任何错误。以下是实现请求事件的javascript
函数:
function toggleVisibility()
{
document.getElementById('TextBox1').disabled = true;
/*
...some other code...
*/
}
当然,在实现这个JS函数之后,您必须在div
定义中定义onclick
事件。
<div id="TBdiv" onClick="toggleVisibility()">
<asp:TextBox ID="TextBox1"..../>
</div>
重要信息:由于您现在从codeehind禁用了TextBox
,因此您必须在某个位置启用它,然后才能再次使用它。否则,在页面运行时将看不到它。
jQuery是解决您的问题的完美方案。代码应该是这样的:
$("#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>
标记中。