web-dev-qa-db-de.com

ASP.NET hat in Javascript einen Wert für hiddenfield festgelegt

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"

18
ozkank

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 %>');
  • Die ID des Asp.net-Serversteuerelements variiert, wenn Sie die Masterseite verwenden. 

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.

29

asp:HiddenField als:

<asp:HiddenField runat="server" ID="hfProduct" ClientIDMode="Static" />

js code:

$("#hfProduct").val("test")

und der Code dahinter:

hfProduct.Value.ToString();
4
ehsan rezaee

versuchen Sie diesen Code: 

$('hdntxtbxTaksit').val('test');
3
Black sheep
  • 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");

2
Gabriel Brito

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.

1
document.getElementById('<%=hdntxtbxTaksit.ClientID%>').value

Die im Server eingestellte ID ist die Server-ID, die sich von der Client-ID unterscheidet.

1
Amiram Korach

Stellen Sie den Javascript-Wert wie in document.getElementByName('hdntxtbxTaksit').value = '0'; ein.

0
Jason Cole

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.

0
T.J. Crowder

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= ""; 
0
Sanjeev Rai