Javascript 在c#代码隐藏中添加Onclick事件

Javascript 在c#代码隐藏中添加Onclick事件,javascript,javascript-events,Javascript,Javascript Events,我有两个文本框tbxProdAc和txtbxHowMany。我想在后面的代码中写一些代码,这样当我在其中一个代码中输入文本时,可能在另一个代码中的任何文本都会被删除 我们将如何实现这一目标?我应该将其置于何种情况下 我试着用 txtbxHowMany.Attributes.Add(“onclick”、“document.getElementById('tbxProdAC'))。innerText='';”; 在页面加载事件中,但在未成功的情况下…是否应该在预初始化中 正如您可能知道的那样,在

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

我们将如何实现这一目标?我应该将其置于何种情况下

我试着用


txtbxHowMany.Attributes.Add(“onclick”、“document.getElementById('tbxProdAC'))。innerText='';”;

在页面加载事件中,但在未成功的情况下…是否应该在预初始化中


正如您可能知道的那样,在这里完全是新手。

如果您使用“设计”视图,只需双击文本框,它就会为您创建以下方法:

    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();
    }

首先,确保生成页面时ID仍然为“tbxProdAC”,如果这是一个.Net控件,则ID会被更改。在这种情况下,您可以使用一个类

尝试以下操作,-这使用JQuery-您将需要包括它

txtbxHowMany.Attributes.Add("onclick", "$('#tbxProdAC').val('');"); 
将以下内容添加到页面的标题部分

 <script type="text/javascript" src="jquery.js"></script> 

您可以从这里获得JQuery.Js文件:


原因:

ASP.NET更改生成控件的ID,因此您的tbxProdAc可能会将其ID更改为其他内容。您需要运行一次应用程序,查看源代码并知道控件的Id,然后在您的
中用新Id替换“tbxProdAc”

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

是的,它可以在负载下工作

这里的主要问题是,当您的控件位于另一个控件(例如网格)内时,asp.net会在控件的id前面加上前缀,以保持控件的id唯一,例如,id不是txbProdAc,而是Gridview1\u txbProdAc,甚至是: Panel1_Panel2_gridview1_txProdAc

如果您想在代码中知道asp.net将“提供”或“重命名”控件的id,您可以使用.ClientID属性: txtProdAc.ClientID将提供您必须从javascript/jquery使用的id

如果将txbProdAc放在另一个控件中,它仍然可以工作,因为.ClientID函数将始终在客户端脚本中为该控件提供正确的id

Michel

要在回答时展开,您正在添加的事件应该是正确的,但您需要以不同的方式设置id选择器,因为ASP.NET会更改发送到客户端的id:

txtbxHowMany.Attributes.Add("onclick", string.Format("document.getElementById('{0}').innerText='';", tbxProdAC.ClientID));

再加上一点TheOne的回答,当我们查看网页的来源时,它将显示呈现的内容。其中ID将不同。像这样的东西

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

TextBox.::.TextChanged事件-在发送到服务器的邮件之间文本框的内容发生更改时发生。感谢Pino-说“您需要包含该内容”是指仅在jquery库中添加引用我的源代码还是实际上在后面的代码中?(为这个厚颜无耻的问题道歉)我已经更新了我的主要帖子,你的提问并不是“厚颜无耻”。我们都需要问问题!继续问是什么让你变得更好。嗯……我一定做错了什么!我使用了提供的代码,页面加载良好,我将数据输入到tbxProdAC中,然后单击txtbxHowMany。这带来了一个错误,定义为“对象不支持此属性或方法”我一定是在什么地方出错了!?!我将“…attributes.add…”放在我的c代码中,放在页面加载事件的后面…这是正确的还是应该放在我的主要源代码中?谢谢你的帮助。更新后的主帖子Val有一个lowecase v:)我爱你,想要你的孩子:)非常非常感谢你,这帮了我很多…不仅仅是这个例子,现在它在我的脑海里也有了意义,我现在可以扩展了。