Ich weiß nicht, wie man den Wert eines hiddenField in Javascript einstellt. Kann mir jemand zeigen, wie das geht?
Javascript:
document.getElementById('hdntxtbxTaksit').value = "";
HTML:
<asp:HiddenField ID="hdntxtbxTaksit" runat="server" Value="" Visible="false"> </asp:HiddenField>
fehler: "Wert der Eigenschaft\'Wert \' kann nicht abgerufen werden: Objekt ist null oder undefiniert"
Vor ASP.Net 4.0
Kunden ID
Rufen Sie die Client-ID ab, die auf der Seite generiert wurde, die die Masterseite verwendet. Da die Masterseite vom Typ UserControl ist, hat sie eine eigene ID und behandelt die Seite als untergeordnetes Steuerelement und generiert eine andere ID mit dem Präfix ctrl_
.
Dies kann durch Verwendung von <%= ControlName.ClientID %>
auf einer Seite gelöst werden und kann einer beliebigen Zeichenfolge oder Javascript-Variablen zugewiesen werden, die später referenziert werden können.
var myHidden=document.getElementById('<%= hdntxtbxTaksit.ClientID %>');
ASP.Net 4.0 +
ClientIDMode-Eigenschaft
Verwenden Sie diese Eigenschaft, um zu steuern, wie Sie die ID für Sie generieren möchten. Für Ihren Fall wird die Einstellung ClientIDMode = "static" auf Seitenebene das Problem lösen. Dasselbe kann auch auf Steuerungsebene angewendet werden.
asp:HiddenField
als:
<asp:HiddenField runat="server" ID="hfProduct" ClientIDMode="Static" />
js code:
$("#hfProduct").val("test")
und der Code dahinter:
hfProduct.Value.ToString();
versuchen Sie diesen Code:
$('hdntxtbxTaksit').val('test');
Zuerst müssen Sie das ausgeblendete Feld richtig erstellen
<asp:HiddenField ID="hdntxtbxTaksit" runat="server"></asp:HiddenField>
Dann müssen Sie den Wert auf das ausgeblendete Feld setzen
Wenn Sie nicht Jquery verwenden, sollten Sie es verwenden:
document.getElementById("<%= hdntxtbxTaksit.ClientID %>").value = "test";
Wenn Sie Jquery verwenden, sollte das so sein:
$("#<%= hdntxtbxTaksit.ClientID %>").val("test");
Wenn Sie controls.Visible = false
beim ersten Laden der Seite festlegen, wird dies in der Clientantwort nicht angezeigt. Mein Vorschlag zur Lösung Ihres Problems ist
Verwenden Sie keinen Platzhalter. Wenn Sie das Szenario beurteilen, benötigen Sie keinen Platzhalter, es sei denn, Sie müssen Steuerelemente auf der Serverseite dynamisch hinzufügen. Verwenden Sie div ohne runat=server
. Sie können die Sichtbarkeit dieses div immer mit css ..__ steuern. Wenn Sie Steuerelemente später dynamisch hinzufügen müssen, verwenden Sie Platzhalter, aber setzen Sie visible = false
nicht. Platzhalter haben sowieso keine Anzeige. Stellen Sie die Sichtbarkeit dieses Platzhalters mit css ein. So machen Sie es programmgesteuert:
placeholderId.Attributes["style"] = "display:none";
Wie bereits in anderen erwähnt, treten Ihre Probleme auf, da Sie nach dem Festlegen von control.visible = false
nicht in der Clientantwort gerendert werden.
document.getElementById('<%=hdntxtbxTaksit.ClientID%>').value
Die im Server eingestellte ID ist die Server-ID, die sich von der Client-ID unterscheidet.
Stellen Sie den Javascript-Wert wie in document.getElementByName('hdntxtbxTaksit').value = '0';
ein.
Ich vermute, Sie müssen ClientID
anstelle der Literal-ID-Zeichenfolge in Ihrem JavaScript-Code verwenden, da Sie das Feld als runat="server"
markiert haben.
Wenn sich beispielsweise Ihr JavaScript-Code in einer ASPX-Datei befindet (keine separate JavaScript-Datei):
var val = document.getElementById('<%=hdntxtbxTaksit.ClientID%>').value;
Wenn es sich um eine separate JavaScript-Datei handelt, die vom ASP.Net-Material nicht gerendert wird, müssen Sie es auf eine andere Weise finden, beispielsweise nach Klasse.
Ich werde vorschlagen, ClientID von HiddenField zu verwenden. Registrieren Sie zunächst die Client-ID in einer beliebigen JavaScript-Variablen von codebehind und verwenden Sie sie anschließend in clientseitigem Skript. wie:
.cs-Dateicode:
ClientScript.RegisterStartupScript(this.GetType(), "clientids", "var hdntxtbxTaksit=" + hdntxtbxTaksit.ClientID, true);
und dann folgenden Code in JS verwenden:
document.getElementById(hdntxtbxTaksit).value= "";