2009-09-20 45 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'); 
相關問題