我有一个asp:Gridview,我希望我的JS脚本在单元格聚焦时触发模态。 我的aspx文件中有以下内容:
<asp:GridView ID="gridviewSLds" runat="server" CellPadding="0" ForeColor="#333333" GridLines="Both" AutoGenerateColumns="False" OnRowCreated="gridviewSLds_RowCreated">
<AlternatingRowStyle BackColor="White" />
<FooterStyle BackColor="#990000" Font-Bold="True" ForeColor="White" />
<HeaderStyle BackColor="#990000" Font-Bold="True" ForeColor="White" />
<PagerStyle BackColor="#FFCC66" ForeColor="#333333" HorizontalAlign="Center" />
<RowStyle BackColor="#FFFBD6" ForeColor="#333333" />
<SelectedRowStyle BackColor="#FFCC66" Font-Bold="True" ForeColor="Navy" />
<SortedAscendingCellStyle BackColor="#FDF5AC" />
<SortedAscendingHeaderStyle BackColor="#4D0000" />
<SortedDescendingCellStyle BackColor="#FCF6C0" />
<SortedDescendingHeaderStyle BackColor="#820000" />
<Columns>
<asp:TemplateField ItemStyle-BorderWidth="0">
<ItemTemplate>
<asp:HiddenField ID="HiddenField1" runat="server" Value='<%# Eval("Id") %>' />
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="item" HeaderText="Metric" SortExpression="item" ReadOnly="false" />
<asp:TemplateField HeaderText="Item">
<ItemTemplate>
<asp:TextBox onfocusin="select()" runat="server" Text='<%# Bind("item") %>'
ID="txtfocus" AutoPostBack="true"></asp:TextBox>
</ItemTemplate>
<HeaderStyle HorizontalAlign="Center" />
<ItemStyle HorizontalAlign="Center" />
</asp:TemplateField>
</Columns>
</asp:GridView>
我的脚本如下:
var usrfocustxt = document.getElementById('<%txtfocus.item%>');
itemtypetxt.onfocus = function () {
modal.style.display = "block";
}
但它告诉我名字&#39; txtfocus&#39;在当前上下文中不存在。我做错了什么?
答案 0 :(得分:1)
你做错了几件事。 首先,如果你想在javascript中使用ID,你应该像这样使用它:
var usrfocustxt = document.getElementById('<%= txtfocus.ClientID %>');
但是这仍然会给你错误'txtfocus'在当前上下文中不存在。
因为GridView(和其他重复数据的控件)会给TextBox一个唯一的名称和ID,所以它不会在页面上多次出现。如果您查看HTML源代码,您可能已经看到TextBox HTML代码现在看起来像这样:
<input name="ctl00$mainContentPane$rptr$ctl05$txtfocus" id="mainContentPane_rptr_txtfocus_5" type="text">
使用索引号和其他数据修改了名称和ID,使其唯一。 因此,要找到正确的TextBox,可以更容易地调用这样的模态弹出函数。
<asp:TextBox ID="txtfocus" runat="server" onfocus="focusTextBox(this.id)" class="modalpopup"></asp:TextBox>
或者您可以使用jQuery和类名将函数绑定到TextBox。
<script type="text/javascript">
$(document).ready(function () {
$('.modalpopup').focus(function () {
alert(this.id);
});
});
</script>