使用jQuery在嵌套GridView中向TextBox添加值

我有一个嵌套Gridview有a link用于显示和隐藏嵌套gridview中的div标签。
默认情况下,当我们单击a link以显示(启用)此Div标签下的Div Tag时,此Div Tag被禁用,它们是一个TextBox和一个Button
当用户单击a link将同时启用div,我想在此文本框中添加@username

例如

     
----------- ----------- ShowDiv

我正在使用的JQuery

 function showDiv() { $("#divShow").show(); $("#TextBox1").text('@username'); return false; } 

上面的jquery代码用于启用Div标签,但没有将@username添加到TextBox1

我对ASP知之甚少,但如果这样在网页中呈现类似于的文本框,那么你想使用$(“#TextBox1”)。val(’@ username’)而不是.text()

解决方案非常类似于我之前提出的问题 。 您可以在对showDiv的调用中传递对锚标记的引用(使用this关键字)并设置div的类名(例如innerDiv ):

 ShowDiv 

showDiv可以找到表格单元格容器,然后是具有innerDiv类名称和文本框的元素。

 function showDiv(lnk) { var $div = $(lnk).closest('td').find('.innerDiv'); $div.show(); $div.find('input[type=text]').val('@username'); } 

请注意,我在jQuery选择器中使用类名和元素类型。 元素的ID不可靠,因为GridView的每一行都显示这些控件,这些控件都应具有不同的ID。

您的代码有两个问题。

首先,ASP.NET为服务器控件生成复杂的ID(类似于blabla_gridparent_gridchild_textbox1_blabla ,而不是简单的textbox1 ),因此如果您想在客户端使用控件,则必须通过您的ClientID属性向ASP.NET请求该ID。服务器控制:

 function showDiv() { $("#divShow").show(); $("#<%= TextBox1.ClientID %>").val('@username'); return false; } 

注意,这是一个服务器代码。 我假设这个JS代码放在.aspx页面(或.ascx控件)中,而不是静态.js文件中。 如果是静态.js文件,则需要将该ID作为参数传递。

其次,您必须使用.val() jquery方法来处理input值。 TextBox呈现为input