2016-08-04 31 views
0

-Code in aspx:ASP.NET JavaScript Rückkehr nach Schaltfläche klicken

<asp:HiddenField ID="hf0" Value="No Value" runat="server"/> 
<asp:TextBox ID="TextBox0" runat="server"></asp:TextBox> 
<asp:Label ID="Label0" runat="server" Text="Label"></asp:Label> 
<asp:Button ID="Validate" runat="server" Text="Validate" OnClick="Validate_Click"/> 

-Code in C#:

protected void Validate_Click(object sender, EventArgs e) 
{ 
     // Set JavaScript 
     string myFn = "function Textbox0_validate(str) {" 
      + "if (str.length < 5) { return 'Invalid, at least 5 chars!';} return 'Passed';}" 
      + "function validateAll() {document.getElementById('hf0').value =Textbox0_validate('"+ TextBox0.Text +"');}"; 
     Page.Header.Controls.Add(new LiteralControl("<script type='text/javascript'>" + myFn + "</script>")); 
     // Start JavaScript 
     Page.ClientScript.RegisterStartupScript(GetType(), "validateAll", "validateAll();", true); 
     // Read results 
     Label0.Text = hf0.Value; 
} 

Der Zweck ist die Funktion 'Textbox0_validate' ist, kann er den Text in ‚Textbox0 validieren ". Wenn ich also auf den Button klicke, sollte 'Label0' das Ergebnis der Validierung anzeigen (Passed oder Invalid ....) Und ich möchte dynamisch sein, deshalb habe ich diese JavaScript aus dem dahinterstehenden Code hinzugefügt. (Auch ich möchte keine RegEx verwenden)

Das Problem mit dem Code ist, wenn ich auf die Schaltfläche "Validieren" klicken, wird der Wert von "hf0" nicht aktualisiert. Jedoch; Wenn ich das zweite Mal klicke, wird das Ergebnis des ersten Mals angezeigt. Also im Grunde muss ich zweimal auf die Schaltfläche klicken, um das gewünschte Validierungsergebnis zu erhalten. Ich denke, es gibt ein Problem mit PostBack, bitte helfen Sie.

+0

Was ist, wenn Sie 'document.getElementById ('hf0')' durch 'document.getElementById ('" + hf0.ClientID "') ersetzen' –

+0

Danke, aber immer noch nicht funktioniert. Ich denke, das Problem ist sogar ich möchte, dass JavaScript innerhalb von Validate_Click ausgeführt wird, aber es hält es nach Abschluss Validate_Click. Beim Aktualisieren von 'hf0' wurde der Wert daher nicht aktualisiert. – Hellack

Antwort

0

Nun, ich löse mein Problem. Ich fügte Label0.Text = hf0.Value in Page_Load hinzu. Dann, in der JavaScript, fügte ich __doPostBack('',''); Also, nachdem das JavaScript beendet ist, wird es Postback, und der Wert wird in Page_Load aktualisiert werden.

+0

Übrigens klingt es so, als ob Sie versucht hätten, die Formularvalidierung durchzuführen, wäre die CustomValidator-Kontrolle ausreichend gewesen? https://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.customvalidator(v=vs.110).aspx –

+0

Ja, das ist sehr hilfreich. Jedoch; Ich erhalte eine Javascript-Funktion von Acrobat. Diese Funktion gibt true oder die Fehlermeldung zurück. Ich muss irgendwie einen eigenen Validierungsweg aufbauen. aber danke – Hellack

+0

Oh ja, kein Problem. Ich musste __doPostBack über die Jahre hinweg abfangen und neu schreiben. Der einzige Vorschlag wäre, die Parameter eventTarget und eventArgument auszufüllen, wenn Sie das entsprechende Ereignis Click (?) Auf dem Back-End erfassen möchten. –