2009-09-20 5 views
0

fonction ValidateNew() {gridview.getElementsByTagName ("entrée") donne des entrées nulles Pourquoi?

 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; 
        } 
       } 
      } 
     } 
    } 

J'appelle cette fonction dans

<asp:TemplateField HeaderText="Edit"> 
<ItemTemplate> 

<asp:LinkButton ID="linkbuttonNew" runat="server" Text="New" CommandName="New" CommandArgument='<%#Container.DataItemIndex%>' 
OnClientClick="javascript:return ValidateNew();"> 
</asp:LinkButton> 

ENTREES montrent des signes zéro Pourquoi?

+0

Ce qui est "OnClientClick"? – kangax

+0

pouvez-vous poster toute la source gridview? – Canavar

+0

Une source HTML réelle serait utile. En outre, vous pouvez facilement supprimer ce 'language =" javascript "' - c'est redondant. – kangax

Répondre

0

Cela semble fragile:

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

Vous comptez sur la connaissance ID généré par ASP.NET pour un élément HTML, qui, au mieux réduit votre portabilité code et, au pire, ne fonctionnera pas (par exemple, si vous changez quelque chose d'autre dans la page). En l'absence de tout HTML réel à regarder, je dirais que cette ligne est la source d'erreur la plus probable.

Qu'est-ce que vous pourriez faire à la place est passer l'ID de l'élément HTML ASP.NET génère dans votre fonction JavaScript, de sorte que les deux premières lignes deviennent

function ValidateNew(elementId) { 

    var gridview = document.getElementById(elementId); 

Mon ASP.NET est rouillé, donc je suis pas sûr de la meilleure façon d'obtenir l'ID et de le transmettre dans le JavaScript. ClientID est la propriété dont vous avez besoin à partir du contrôle généré, que vous obtenez dans l'attribut OnClientClick (une recherche rapide m'a trouvé this page, ce qui peut aider). Et vous ne devriez pas avoir le préfixe "javascript:" dans votre valeur d'attribut OnClientClick. La valeur d'un attribut de gestionnaire d'événements JavaScript doit être uniquement JavaScript.

0

Je sais qu'il a été tard. Je suppose que cela aurait aidé:

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

Cela vous aidera à utiliser:

var gridview = document.getElementById('someGrid'); 
Questions connexes