我正在尝试更改我网站的一部分的功能。目前,我有一个在我的表之外的验证按钮。每当用户单击该按钮时,就会发生验证。
但是,我正在以一种方式进行更改,即删除验证按钮并将功能移至位于表内的链接按钮。
下面是我的代码:
<table width="100%" cellpadding="4">
<tr>
<td valign="top">
//something else here
</td>
<td valign="top" align="right">
<asp:GridView ID="myGridView" runat="server" OnRowDataBound="myGridView_RowDataBound">
<Columns>
<asp:TemplateField HeaderText="Column 1">
<ItemTemplate>
// some control
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Column 2">
<ItemTemplate>
// some control
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Column 3">
<ItemTemplate>
// some control
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Column 4">
<ItemTemplate>
<asp:LinkButton ID="lbValidate" runat="server" Text="Validate" OnClientClick="return MyValidation__Submit(this.form)" CausesValidation="true" OnClick="btnValidate_Click"></asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</td>
</tr>
</table>
<div style="margin:10px 0px 10px 0px;">
<asp:Button ID="btnValidate" runat="server" Text="Validate" OnClientClick="return MyValidation__Submit(this.form)" CommandArgument="Save" CausesValidation="true" OnClick="btnValidate_Click" />
</div>
这是执行验证的 JavaScript 块的示例:
<script type="text/javascript">
function MyValidation__Submit(formName) {
alert("Test :" + formName);
// do validations
var joForm = document.getElementById(formName.id);
for (var i = 0; i < joForm.elements.length; i++) {
// do something
}
return true;
}
</script>
当单击 Validate 按钮而不是 LinkButton 时,这非常有效。为了测试它,我不得不放alert("Test :" + formName);
线。每当我触发验证按钮时,系统警报都会返回一个字符串值“[object HTMLFormElement]”,考虑到它按照我想要的方式运行,我认为它是可以的。但是,当我尝试触发位于表内的 Validate LinkButton 时,系统警报返回“未定义”,使我的整个验证代码无用。
有人可以指出我在这里缺少什么吗?我猜它与控件的层次结构有关,因为这是唯一改变的东西。
谢谢!
编辑:
这是我能走的最远,但我仍然无法到达表格。这一回HTMLDivElement
。
<asp:LinkButton ID="lbValidate" runat="server" Text="Validate" OnClientClick="return MyValidation__Submit(this.parentNode.parentNode.parentNode.parentNode.parentNode)" CausesValidation="true" OnClick="btnValidate_Click"></asp:LinkButton>
是的,你没有看错。它有 5 个.parentNode
。