Attributes.Add onclick事件在c#代码后面

时间:2009-11-30 13:25:16

标签: javascript javascript-events

我有两个文本框tbxProdAc& txtbxHowMany。我想在后面的代码中编写一些代码,这样当我在一个文本中输入文本时,任何可能在另一个文本中的文本都会被删除。

如何实现这一目标以及我应该在哪种情况下实现这一目标?

我尝试过使用

txtbxHowMany.Attributes.Add("onclick", "document.getElementById('tbxProdAC').innerText='';");

在页面加载事件中但是成功完成...应该在pre_init中吗?

正如你可以说的那样,在这里完成新手工作。

6 个答案:

答案 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”替换为您的

中的新ID
txtbxHowMany.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();
    }