Javascript - Benutzerdefinierte Bestätigungsdialog - Ersetzen von JS bestätigen

8

Dies kann eine einfache Antwort sein -

In meinem JS habe ich die Bestätigungsfunktion von JS durch meine eigene ersetzt. Was im Grunde und einfach so aussieht:

%Vor%

Offensichtlich funktionierte die Rückkehr wahr / falsch nicht, sonst würde ich nicht fragen!

In einer anderen Funktion habe ich (So bekommen Sie das Bild):

%Vor%

Wie kann ich bestätigen, dass der Wert direkt zurückgegeben wird? Ich würde annehmen, dass es zurückkommt {this.value} oder so?

Danke!

    
MKN Web Solutions 12.03.2011, 14:24
quelle

3 Antworten

9

Ihr Problem besteht darin, dass Ihre benutzerdefinierte Bestätigung nicht modal ist. Das heißt, wenn Ihre Bestätigung angezeigt wird, läuft der Code weiter. Es gibt keine Möglichkeit für Sie, innerhalb von confirm() auf die Auswahl des Benutzers zu warten und von dort zurückzukehren.

Soweit ich weiß, gibt es keine Möglichkeit, das Verhalten eines modalen Bestätigungsdialogs in Javascript zu emulieren (außer für den nicht standardmäßigen ShowModalDialog() .)

Der übliche Weg, dies zu tun, ist das Hinzufügen eines function() { ... } Callbacks zum click -Ereignis einer jeden Schaltfläche und das Ausführen von allem, was der "ok" -Klick dort tun soll.

    
Pekka 웃 12.03.2011, 14:27
quelle
5

Ich habe dieses Problem gelöst, indem ich dem Objekt willkürliche Daten hinzufügte und beim Klicken nach diesen Daten suchte. Wenn es existiert, fahren Sie mit der Funktion als normal fort, ansonsten bestätigen Sie mit einem Ja / Nein (in meinem Fall mit einem jqtools Overlay). Wenn der Benutzer auf "Ja" klickt, fügen Sie die Daten in das Objekt ein, simulieren Sie einen weiteren Klick und löschen Sie die Daten. Wenn sie auf Nein klicken, schließen Sie einfach das Overlay.

Hier ist mein Beispiel:

%Vor%

Und das habe ich getan, um die confirm-Funktion zu überschreiben (mit einem jquery tools overlay):

%Vor%     
Steve 11.05.2011 15:43
quelle
1

Ich habe eine andere gehackte Lösung gefunden, um den Modale-Dialog zu emulieren, wie von Pekka 웃 zuvor erwähnt. Wenn Sie die JS-Ausführung unterbrechen, ist es nicht nötig, eine Schleife zu durchlaufen (true). Nach dem Abrufen der Benutzereingabe (Klick) können wir mit der JS-Ausführung fortfahren, während wir die Ursprungsmethode erneut mit eval aufrufen und die Benutzerauswahl als boolesch zurückgeben. Ich habe ein kleines Puzzle mit jquery und notyjs erstellt, um einfach meine Lösung zu zeigen: jsfiddle: Überschreibe nativen Modal-Bestätigungsalarm

Hier nochmal der wichtige Code:

%Vor%     
Mitch 04.11.2016 12:43
quelle

Tags und Links