Comment modifier la valeur d'un asp: textbox from javascript

J'ai une asp: zone de texte

<asp:textbox ID="NewName" runat="server" /> 

Et lorsqu'un utilisateur clique sur le bouton "Annuler", je veux effacer tout ce qui se trouve dans cette zone de texte en faisant en sorte que la valeur soit juste "". S'il s'agissait d'un champ de saisie du type de texte, je pourrais simplement le faire en javascript:

 document.getElementById('NewName').value= ""; 

Mais je ne peux pas simplement le faire parce que c'est un asp: une zone de texte.

Lorsque votre asp: la boîte de texte est rendue à l'interface utilisateur, alors oui, c'est juste un champ de saisie du type de texte. La seule partie qui peut être un problème est l'ID, mais cela peut être défini à l'aide de ClientIDMode:

 <asp:textbox ID="NewName" runat="server" ClientIDMode="Static" /> 

Rend:

 <input type="text" id="NewName" /> 

Et donc le JavaScript que vous utilisez devrait fonctionner parfaitement.

<asp:TextBox> rend un <input type="text"> que vous pouvez utiliser comme vous le feriez, la seule complication est l'attribut id="" est réécrit, mais vous pouvez le faire:

 document.getElementById("<%= NewName.ClientID %>").value = ""; 

En supposant que ce script se trouve dans la même page que la zone de texte. Si cela se trouve dans un <script src=""> référencé, vous devrez utiliser une variable de script globale de l'ID de l'élément.

Essayez de configurer ClientIDMode de la zone de texte sur Static

De cette façon, le javascript devrait pouvoir les trouver avec le même identifiant que dans ASPX.

Ici, une page de test complète

 <%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> <asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent"> <script type="text/javascript"> function ClearTB1() { document.getElementById("TextBox1").value=""; } </script> </asp:Content> <asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent"> <p> <asp:TextBox ID="TextBox1" runat="server" Text="test" ClientIDMode="Static"></asp:TextBox><br /> <asp:TextBox ID="TextBox2" runat="server" Text="test" ClientIDMode="Static"></asp:TextBox><br> <asp:Button ID="Button1" runat="server" Text="Button" OnClientClick="ClearTB1()" CausesValidation="False" UseSubmitBehavior="False" /><br /> </p> </asp:Content> 

J'ai eu le même problème. Je l'ai résolu une fois que je me suis souvenu qu'il y a eu des problèmes d'asp.net sur les Ids.

Dans mon aspx, j'ai eu:

 <input type="text" id="sessSubs"/> 

Plus bas vers le bas, dans un gridview (d'où l'utilisation de "class" au lieu de "id"), j'ai une colonne qui avait un asp: TextBox:

 <asp:TextBox runat="server" class="paid" /> 

Une fois que j'ai rappelé le problème de l'identité, c'était juste un cas de changer la façon dont j'ai référencé la zone de texte:

 <script type="text/javascript"> $(document).ready(function() { function updateSubs() { var sub = parseFloat($('[id$=sessSubs]').val()); $('.paid').val(sub); } $(document).on('change, keyup', '[id$=sessSubs]', updateSubs); }); </script>