我在NET上搜索了很多,以获得解决方案,但我找不到
有人能告诉我如何使用javascript访问转发器控件的标签和文本框值吗?
这是我的代码
<asp:Repeater ID="Repeater1" runat="server" DataSourceID="SqlDataSource1">
<ItemTemplate>
<table id="t1" width="200px:" style="background-color: skyblue" runat="server">
<tr>
<td>
<asp:TextBox ID="TextBox3" Text='<%#DataBinder.Eval(Container.DataItem, "empid")%>'
runat="server" />
<asp:CheckBox ID="CheckBox1" runat="server" />
<asp:Label ID="Label1" runat="server" Text='<%#DataBinder.Eval(Container.DataItem, "empid")%>'></asp:Label>
<asp:Label ID="lblname" runat="server" Text='<%#DataBinder.Eval(Container.DataItem, "ename")%>'></asp:Label>
<br />
<br />
</td>
</tr>
</table>
</ItemTemplate>
</asp:Repeater>
现在我想使用javascript
访问转发器的标签,文本框@Diodeus
我尝试了你的代码
function submitAll() {
var thisLabel = $('.myLabel').eq(0);
alert(thisLabel);
}
但我的结果是警告
[object Object]
和@deostroll
我以这种方式尝试了你的代码
但没有得到任何东西
function GetData() {
var arrTables = document.getElementById('myDiv').getElementsByTagName('table');
var tbl = arrTables[0];
var td = tbl.childNodes[0].childNodes[0].childNodes[0];
var txt = td.childNodes[0];
alert(txt.value);
}
答案 0 :(得分:2)
<asp:Label ID="Label1" runat="server" Text='<%#DataBinder.Eval(Container.DataItem, "empid")%>'></asp:Label>
ID必须是唯一的,因此您无法将相同的ID应用于转发器中的所有标签。改为使用CSS类名。
<asp:Label CssClass="myLabel" runat="server" Text='<%#DataBinder.Eval(Container.DataItem, "empid")%>'></asp:Label>
由于jQuery附带了.NET,因此您可以使用它而不是普通的JavaScript来更轻松地访问这些元素。
var thisLabel = $('.myLabel').eq(0)
其中0是元素的索引,因为可以有很多。
答案 1 :(得分:0)
将转发器包含在带有一些id的div中,比如myDiv。
<div id="myDiv">
<!-- your repeater code -->
<asp:Repeater ID="Repeater1" runat="server"...>
<ItemTemplate>
<table>...</table>
</ItemTemplate>
</asp:Repeater>
</div>
做一个
var arrTables = document.getElementById('myDiv').getElementsByTagName('table');
现在arrTables
只是div中所有表元素的数组。找到所需表格的序数:例如我是第一张桌子。
var tbl = arrTables[0];
找到表元素的相应 td :
var td = tbl.childNodes[0].childNodes[0].childNodes[0];
以上内容可能因浏览器加载DOM和内容而异。因此,我说你调试并找到适合自己的。
获得 td 参考后:
var txt = td.childNodes[0];
这将给出文本框。 txt.nextSibling
会给出标签......等等。