function ValidateNew(){
var gridview = document.getElementById('ctl00_cp_GridViewKRIlib');
if (gridview != null) {
var Inputs = gridview.getElementsByTagName("input");
for (i = 0; i < Inputs.length; i++) {
if (Inputs[i].type == 'text') {
if (Inputs[i].value == "") {
alert('Enter the value!');
Inputs[i].focus();
return false;
}
}
}
}
}
我在
中调用此函数<asp:TemplateField HeaderText="Edit">
<ItemTemplate>
<asp:LinkButton ID="linkbuttonNew" runat="server" Text="New" CommandName="New" CommandArgument='<%#Container.DataItemIndex%>'
OnClientClick="javascript:return ValidateNew();">
</asp:LinkButton>
INPUTS显示零为什么?
答案 0 :(得分:0)
这看起来很脆弱:
var gridview = document.getElementById('ctl00_cp_GridViewKRIlib');
您依赖于了解ASP.NET为HTML元素生成的ID,这最多会降低代码的可移植性,最糟糕的是根本不起作用(例如,如果您更改了页面中的其他内容)。在没有任何实际HTML的情况下,我建议该行是最可能的错误来源。
您可以做的是将ASP.NET生成的HTML元素的ID传递给您的JavaScript函数,因此前两行变为
function ValidateNew(elementId) {
var gridview = document.getElementById(elementId);
我的ASP.NET很生疏,所以我不确定如何最好地获取ID并将其传递给JavaScript。 ClientID是您在生成的控件中需要的属性,您可以在OnClientClick
属性中找到该属性(快速搜索到我this page,这可能有所帮助)。并且您的OnClientClick属性值不应该包含“javascript:”前缀。 JavaScript事件处理程序属性的值应该只是JavaScript。
答案 1 :(得分:0)
我知道已经很晚了。我想这会有所帮助:
<asp:GridView ID="someGrid" ClientIDMode="Static" />
这可以帮助您使用:
var gridview = document.getElementById('someGrid');