Je ne sais pas comment définir la valeur d'un hiddenField en Javascript. Quelqu'un peut-il me montrer comment faire cela?
Javascript:
document.getElementById('hdntxtbxTaksit').value = "";
HTML:
<asp:HiddenField ID="hdntxtbxTaksit" runat="server" Value="" Visible="false"> </asp:HiddenField>
erreur: "Impossible d'obtenir la valeur de la propriété\'valeur \': l'objet est null ou non défini"
Avant ASP.Net 4.0
Identité du client
Obtenez l'ID client généré dans la page utilisant la page maître. Comme la page maître est de type UserControl, elle aura son propre identifiant, elle traitera la page comme un contrôle enfant et générera un identifiant différent avec le préfixe ctrl_
.
Ce problème peut être résolu en utilisant <%= ControlName.ClientID %>
dans une page et peut être affecté à une chaîne ou à une variable javascript pouvant être référencée ultérieurement.
var myHidden=document.getElementById('<%= hdntxtbxTaksit.ClientID %>');
ASP.Net 4.0 +
ClientIDMode, propriété
Utilisez cette propriété pour contrôler la manière dont vous souhaitez générer l'ID pour vous. Pour votre cas, définir ClientIDMode = "static" au niveau de la page résoudra le problème. La même chose peut également être appliquée au niveau de contrôle.
asp:HiddenField
comme:
<asp:HiddenField runat="server" ID="hfProduct" ClientIDMode="Static" />
code js:
$("#hfProduct").val("test")
et le code derrière:
hfProduct.Value.ToString();
essayez ce code:
$('hdntxtbxTaksit').val('test');
D'après ce que je comprends, si vous définissez controls.Visible = false
lors du chargement initial de la page, le rendu ne sera pas rendu dans la réponse du client. Ma suggestion pour résoudre votre problème est
N'utilisez pas d'espace réservé, à en juger par le scénario, vous n'avez pas vraiment besoin d'un espace réservé, sauf si vous devez ajouter de façon dynamique des contrôles côté serveur. Utilisez div, sans runat=server
. Vous pouvez toujours contrôler la visibilité de cette div en utilisant css . Si vous devez ajouter des contrôles dynamiquement plus tard, utilisez un espace réservé, mais ne définissez pas visible = false
. L'espace réservé n'aura de toute façon pas d'affichage. Définissez la visibilité de cet espace réservé à l'aide de css. Voici comment procéder par programmation:
placeholderId.Attributes["style"] = "display:none";
Quoi qu'il en soit, comme d'autres l'ont déjà indiqué, vos problèmes surviennent car une fois que vous avez défini control.visible = false
, il n'est pas rendu dans la réponse du client.
document.getElementById('<%=hdntxtbxTaksit.ClientID%>').value
L'identifiant que vous avez défini sur le serveur est l'identifiant du serveur, différent de l'identifiant du client.
Essayez de définir la valeur Javascript comme dans document.getElementByName('hdntxtbxTaksit').value = '0';
Je suppose que vous devez utiliser ClientID
plutôt que la chaîne d'identifiant littéral dans votre code JavaScript, car vous avez marqué le champ avec runat="server"
.
Par exemple, si votre code JavaScript est dans un fichier aspx (pas un fichier JavaScript séparé):
var val = document.getElementById('<%=hdntxtbxTaksit.ClientID%>').value;
Si c'est dans un fichier JavaScript séparé qui n'est pas rendu par le fichier ASP.Net, vous devrez le trouver d'une autre manière, par exemple par classe.
Je vais vous suggérer d'utiliser ClientID de HiddenField. Enregistrez d’abord son identifiant client dans n’importe quelle variable Javascript à partir de codebehind, puis utilisez-la dans le script clientside. comme:
Code de fichier .cs:
ClientScript.RegisterStartupScript(this.GetType(), "clientids", "var hdntxtbxTaksit=" + hdntxtbxTaksit.ClientID, true);
puis utilisez le code suivant dans JS:
document.getElementById(hdntxtbxTaksit).value= "";