Ich habe eine RadioButtonList mit den Optionen "Nicht anwendbar", "Nicht verfügbar", "Leave" und "Verfügbar".
Ich werfe Bestätigungsmeldung bei Klick auf "Leave" in RadioButtonList von der Serverseite wie folgt
%Vor%Wenn der Benutzer auf "Abbrechen" klickt, wird automatisch "Verfügbar" mit dem folgenden Code ausgewählt.
Folgendes ist der JavaScript-Code, um "Ok" oder "Abbrechen" zu verlassen.
%Vor%Wenn der Benutzer zum zweiten Mal auf "Leave" klickt, wird SelectedIndexChanged überhaupt nicht ausgelöst.
Ich bin flexibel, Server-Side-Code auch auf die Client-Seite zu verschieben.
Aktualisieren
Das Folgende ist der relevante HTML-Code
%Vor%
Update 2
Ich stecke hier fest - ich muss darauf hinweisen. ClientID von RadioButtonList zu $ das von jQuery. Das ist es. Da kann ich die 2. Antwort von @smoksnes
ausführenUpdate 3
Wenn der Benutzer "Nicht verfügbar" oder "Verlassen" auswählt, sollte die Fehlermeldung "Möchten Sie Urlaub nehmen?" angezeigt werden. und wenn er "Abbrechen" auswählt, sollte die Auswahl von RadioButtonList auf "Verfügbar" hinweisen. Andernfalls sollte "Nicht verfügbar" oder "Leave" entsprechend gewählt werden.
Da Sie für die Idee offen sind, den Code stattdessen an den Client zu übertragen. Entferne das OnSelectedIndexChange
auf deinem Radiobutton, um das Postback zu überspringen. Sie sollten stattdessen so etwas tun können:
Nachfolgend finden Sie ein Snippet, das IDs ohne Servercode verwendet.
UPDATE:
Ich habe das Skript auf den neuen HTML-Code aktualisiert. Hier binden wir das Ereignis stattdessen an die Montagesteuerung. Beachten Sie, dass Sie möglicherweise ein CssClass
auf Ihrer Kontrolle statt ID zu verwenden. Dann können Sie dasselbe Skript für alle Ihre Steuerelemente verwenden (MyMonday, MyTuesday usw.). Es würde ungefähr so aussehen:
Wenn dem so ist, sollten Sie in der Lage sein, das folgende Skript zu ändern:
%Vor%Andernfalls müssen Sie die clientID verwenden.
%Vor%Ich weiß nicht, warum onclick="javascript: setTimeout" hinzugefügt wird das HTML
Das liegt daran, dass Sie Serversteuerelemente mit AutoPostBack
für deine Radiobuttons. Entfernen Sie das und Sie sollten in Ordnung sein. Lesen Sie mehr dazu in diese Frage .
Im folgenden Ausschnitt habe ich mir die Freiheit genommen, den verschiedenen Radiobuttons CSS-Klassen zuzuordnen. Man wird bestimmen, wann das "check if leave" -Skript ausgeführt werden soll. Und eine ist, zu wissen, welcher Radiobutton auszuwählen ist, wenn der Benutzer sich entscheidet, zu bleiben. Die CSS-Klassen sind leave-check
und select-if-not-leave
. Sie können sie mit der Eigenschaft CssClass
hinzufügen .
Sie können auch überprüfen, was HTML gerendert wird. Der von Ihnen angegebene HTML-Code verwendet table
mit tr
. Stellen Sie also sicher, dass die CSS-Klasse tatsächlich auf der input
gerendert wird. Andernfalls müssen Sie den Wahlschalter anpassen.
UPDATE 2:
- Wenn ich jQuery-Skript in Day UserControl schreibe, kann ich nur .leave- und .available-Klassen verwenden, aber nicht .day-control. 2. Wenn ich schreibe das jQuery-Skript in UserControl, in dem MyMonday, MyTuesday, ... MyFriday sind deklariert, dann kann ich nur .day-control verwenden, aber nicht .leave und verfügbare Klassen. @smoksnes Bitte adressiere diese Mehrdeutigkeit.
Wo Sie ein Skript haben, spielt keine Rolle, solange das Skript gleich aussieht. Vorzugsweise sollten Sie es zusammen mit Ihren anderen Skripten in eine js-Datei einfügen. Hier finden Sie ein paar Informationen dazu, wie das Skript und jQuery-Selektoren funktioniert:
Wenn Sie .day-control span.available input
verwenden, sucht es zuerst nach einem Element mit der CSS-Klasse day-control
, und ein Element, das ein span
WITH css-class available
und zuletzt ein input
unter span
ist. Wenn es mehrere Elemente gibt, die die Kriterien erfüllen, die ich gerade erwähnt habe, werden alle diese Elemente zurückgegeben. Dieses Skript sollte nur einmal gerendert werden , da es die Ereignisse für alle Ihre DayUserControl
erfasst, da sie alle die gleiche CSS-Klasse day-control
haben.
Wenn Sie jedoch #<%=this.ClientID%> span.leave input
verwenden, wird zunächst nach dem Element mit der spezifischen ID gesucht ( this.ClientID
) und es sollte nur eine davon geben. Deshalb müssen Sie dieses spezielle Skript einmal für jedes DayUserControl
rendern, da es für dieses spezielle Benutzersteuerelement eindeutig ist.
Übergeben Sie das Aufrufobjekt an die radconfirm-Funktion. ( Ссылка ).
Übergeben Sie Anruferobjekt vom Server
protected void rdlUser_SelectedIndexChanged(object sender, EventArgs e)
{
//var oConfirm = radconfirm(text, callBackFn, oWidth, oHeight, callerObj, oTitle, imgUrl);
radWindowManager.RadConfirm("Are you sure you want to take leave?", "confirmLeave", 300, 100, null, "");
}
Eine JavaScript-Funktion zum Überprüfen aller Steuerelemente in einer Liste.
function confirmLeave(arg) {
if (arg == true) {
alert("User has selected Leave.")
}
else {
//get callerid and validate
var rdlUser = docment.getElementById("<%= rdlUser.ClientID %>");
var radioButtons = rdlUser.getElementsByTagName('input');
radioButtons[1].checked = true;
}
}
Ich habe Dokumentation verwiesen und ich habe diesen Code nicht getestet hoffe das hilft.
Tags und Links javascript jquery asp.net telerik