Wie nennen RequiredFieldValidator auf dem client vor dem postback
Habe ich geerbt, einige code, bricht eine Seite in tabs mit divs. Auf der ersten Seite gibt es viele erforderlichen Feld-und regex-Prüfungen. Das problem ist, kann ein Benutzer auf einen anderen Reiter wechseln, auslösen eines Postbacks und nicht die Prüfungen auf der ersten Seite, dass die Dinge in einem Durcheinander.
Was ich im Stande sein will zu tun ist, führen Sie die Validierung auf der ersten Seite als ein Benutzer wählt einen anderen tab, so dass Sie verschieben, um einen neuen tab, bis die erste Seite gültig ist.
<ul>
<li><a href="#tab1">Tab 1</a> </li>
<li><a href="#tab2" onclick="return isValid();">Tab 2</a></li>
<li><a href="#tab3" onclick="return isValid();">Tab 3</a></li>
</ul>
Wo isValid
muss das Feuer aus den Prüfungen.
Dank!
UPDATE: Die Antwort codeka ist ziemlich nah, allerdings, weil ich muss beide href und onclick-Attribute (um zu vermeiden, messing-up-display), die Registerkarte (Anker -) Schalter noch stattfindet, selbst wenn die Validierung fehlschlägt. Hier ist, wie ich dies Problem gelöst. disclaimer: ugly code vor
<ul>
<li><a id="tab1Tab" href="#tab1" style="display:none"/><a onclick="isValid('tab1');">Tab 1</a></li>
<li><a id="tab2Tab" href="#tab2" style="display:none"/><a onclick="isValid('tab2');">Tab 2</a></li>
<li><a id="tab3Tab" href="#tab3" style="display:none"/><a onclick="isValid('tab3');">Tab 3</a></li>
</ul>
function isValid(tab) {
var valid = Page_ClientValidate();
var tabId = (valid ? tab : "tab1") + "Tab";
$("#" + tabId).click();
}
Beachten Sie die Verwendung von jQuery für cross-browser-Kompatibilität mit dem click-Ereignis. Und das funktioniert nur, wenn es keine Prüfungen, die auf anderen Registerkarten, wie pro Thomas' Antwort, werde ich brauchen, um die Validierung verwenden, Gruppen und zusätzliche Logik in isValid
wenn jeder Hinzugefügt.
Du musst angemeldet sein, um einen Kommentar abzugeben.
ASP.NET erstellt eine Globale javascript-Funktion
Page_ClientValidate
, die Sie anrufen können, um das Feuer der Prüfungen:Page_ClientValidate("Registration");
false
zurückgegeben.Können Sie versuchen, eine Validierung pro Gruppe tab. Auf Sie von einer Registerkarte zu einer anderen, Sie nennen würde, so etwas wie so, wo die tab-Namen darstellen, die Validierung Gruppen:
NEBEN ich erwähnte dies in einem Kommentar, aber ich dachte, ich würde hinzufügen, dass es auf meinen Beitrag. Wenn es nicht irgendwelche anderen Prüfungen, die auf anderen Registerkarten, dann eine andere Lösung wäre, einfach einen Haken in die andere .NET-Steuerelemente, die auf den anderen Registerkarten können auslösen eines Postbacks mit CausesValidation="false" (z.B. DropDownLists mit AutoPostBack="true")