2009-09-20 46 views
0

功能ValidateNew(){gridview.getElementsByTagName(“input”)给出输入零为什么?

 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> 

输入本功能是显示为零,为什么?

+0

什么是 “的OnClientClick”? – kangax

+0

你可以发布整个gridview源? – Canavar

+0

实际的HTML源代码会有帮助。此外,你可以很容易地删除'language =“javascript”' - 这是多余的。 – kangax

回答

0

这看起来脆:

var gridview = document.getElementById('ctl00_cp_GridViewKRIlib'); 

你依靠知道ASP.NET的生成ID为一个HTML元素,它充其量降低了代码的可移植性和在最坏的情况是行不通的(例如,如果你改变页面中的其他内容)。在没有任何实际的HTML看,我会建议该行是最可能的错误来源。

你可以做的反而是经过HTML元素ASP.NET中生成到您的JavaScript函数的ID,所以前两行成为

function ValidateNew(elementId) { 

    var gridview = document.getElementById(elementId); 

我的ASP.NET是生锈的,所以我不知道如何最好地获取ID并将其传递到JavaScript中。 ClientID是您生成的控件所需的属性,您在OnClientClick属性(快速搜索找到我this page,这可能有所帮助)中获得。您的OnClientClick属性值中不应包含“javascript:”前缀。 JavaScript事件处理程序属性的值应该只是JavaScript。

0

我知道已经晚了。我想这会帮助:

<asp:GridView ID="someGrid" ClientIDMode="Static" /> 

这将有助于您使用:

var gridview = document.getElementById('someGrid'); 
相关问题