我有两个文本框tbxProdAc& txtbxHowMany。我想在后面的代码中编写一些代码,这样当我在一个文本中输入文本时,任何可能在另一个文本中的文本都会被删除。
如何实现这一目标以及我应该在哪种情况下实现这一目标?
我尝试过使用
txtbxHowMany.Attributes.Add("onclick", "document.getElementById('tbxProdAC').innerText='';");
在页面加载事件中但是成功完成...应该在pre_init中吗?
正如你可以说的那样,在这里完成新手工作。
答案 0 :(得分:7)
首先,确保在页面生成时ID仍然是“tbxProdAC”(如果这是.Net控件),ID将会被更改。在这种情况下,您可以使用类。
尝试以下方法, - 这使用JQuery - 您需要包含
txtbxHowMany.Attributes.Add("onclick", "$('#tbxProdAC').val('');");
将以下内容添加到页面的“头部”。
<script type="text/javascript" src="jquery.js"></script>
你可以从这里获取JQuery.Js文件:http://docs.jquery.com/Downloading_jQuery#Download_jQuery
为什么:https://stackoverflow.com/questions/308751/why-use-jquery
答案 1 :(得分:1)
ASP.NET更改生成的控件的ID,因此可能您的tbxProdAc将其ID更改为其他内容。您需要运行应用程序一次,查看源代码并知道控件的ID,然后将“tbxProdAc”替换为您的
中的新IDtxtbxHowMany.Attributes.Add("onclick", "document.getElementById('tbxProdAC').innerText='';");
是的,它将在onLoad上运行。
答案 2 :(得分:1)
这里的主要问题是,当你的控件在另一个控件(例如网格)内时,asp.net会为控件的id添加前缀,以保持控件的id唯一,例如id不会是txbProdAc但是它将是Gridview1_txbProdAc甚至是: Panel1_Panel2_gridview1_txProdAc。
如果你想在代码中知道id asp.net将'给'或'重命名'你的控件,你可以使用.ClientID属性: txtProdAc.ClientID将为您提供必须从javascript / jquery使用的ID。
如果您将txbProdAc放在另一个控件中,它仍然可以工作,因为.ClientID函数将始终为客户端脚本中的控件提供正确的id。
米歇尔
答案 3 :(得分:0)
要扩展Michel's答案,您添加的事件应该是正确的,但是您需要以不同方式设置ID选择器,因为ASP.NET会更改发送到客户端的ID:
txtbxHowMany.Attributes.Add("onclick", string.Format("document.getElementById('{0}').innerText='';", tbxProdAC.ClientID));
答案 4 :(得分:0)
在TheOne回答的内容中添加一点,当我们查看网页的来源时,它会显示所呈现的内容。 ID会有所不同。有点像这样。
txtbxHowMany.Attributes.Add("onclick", "document.getElementById('ctl00_ContentPlaceHolder1_tbxProdAC').innerText='';")
答案 5 :(得分:-1)
如果您使用设计视图,只需双击文本框,它就会为您创建这些方法:
private void tbxProdAc_TextChanged(object sender, EventArgs e)
{
}
private void txtbxHowMany_TextChanged(object sender, EventArgs e)
{
}
然后你只需要像这样编辑它们:
private void tbxProdAc_TextChanged(object sender, EventArgs e)
{
txtbxHowMany.Clear();
}
private void txtbxHowMany_TextChanged(object sender, EventArgs e)
{
tbxProdAc.Clear();
}