So erstellen Sie einen Dialog mit den Optionen „Ok“ und „Abbrechen“.
Lesezeit: 7 Minuten
crchin
Ich werde eine Schaltfläche erstellen, um eine Aktion auszuführen und die Daten in einer Datenbank zu speichern.
Sobald der Benutzer auf die Schaltfläche klickt, möchte ich, dass eine JavaScript-Warnung die Optionen „Ja“ und „Abbrechen“ anbietet. Wenn der Benutzer „Ja“ auswählt, werden die Daten in die Datenbank eingefügt, andernfalls wird keine Aktion ausgeführt.
Wie zeige ich einen solchen Dialog an?
s4y
Sie suchen wahrscheinlich confirm()die eine Eingabeaufforderung anzeigt und zurückkehrt true oder false basierend auf der Entscheidung des Benutzers:
if (confirm('Are you sure you want to save this thing into the database?')) {
// Save it!
console.log('Thing was saved to the database.');
} else {
// Do nothing!
console.log('Thing was not saved to the database.');
}
Bestätigen hat OK- und CANCEL-Tasten. Können diese Tasten auf JA/NEIN gesetzt werden?
– Owen
19. April 13 um 0:20 Uhr
@ Owen Nr. Die spez sagt, dass Sie nur eine Nachricht übermitteln müssen. Sie können einen Dialog in HTML emulieren (obwohl er nicht wie der eingebaute blockiert). jQuery-Dialog ist ein gutes Beispiel für die Umsetzung dieser Art von Sache.
– s4y
19. April ’13 um 17:00 Uhr
Hinweis: Sie können a setzen return innerhalb von else und dann müssen Sie nicht Ihren gesamten Code in die Bestätigung einschließen! (von Fall zu Fall behoben)
– Jacob Raccuia
02.09.14 um 14:54 Uhr
@JacobRaccuia Oder einfach if(!confirm('message')) return;
– Aaron
15. Oktober 14 um 21:03 Uhr
Beim Benutzen confirm in React musste ich verwenden window.confirm zu vermeiden ein Unexpected use of confirm Error
– Benutzer-124812948
17. November 20 um 13:26 Uhr
Chuck Norris
var answer = window.confirm("Save data?");
if (answer) {
//some code
}
else {
//some code
}
Benutzen window.confirm statt Alarm. Dies ist der einfachste Weg, um diese Funktionalität zu erreichen.
Du kannst auch mitgehen if(confirm("...")){ stattdessen
– Nibou
6. März 14 um 18:06 Uhr
dana
So machen Sie das mit ‘Inline’-JavaScript:
<form action="http://www.google.com/search">
<input type="text" name="q" />
<input type="submit" value="Go"
onclick="return confirm('Are you sure you want to search Google?')"
/>
</form>
Es ist besser, das onsubmit-Ereignis des Formulars zu handhaben: Wenn der Benutzer mit Ihrem Code die Eingabetaste im Text drückt, wird das Formular ohne Aufforderung gesendet!
– p91paul
3. Juni 13 um 13:58 Uhr
@p91paul – Bei welchem Browser schlägt das für Sie fehl? Ich habe gerade versucht, die Eingabetaste in IE, Chrome und Safari unter Windows zu drücken, und es hat wie erwartet funktioniert. jsfiddle.net/ALjge/1
– dana
3. Juni 13 um 16:24 Uhr
Nun, ich war mir sicher, was ich sagte, aber ich habe es nicht getestet und ich lag falsch. Verzeihung!
– p91paul
3. Juni 13 um 21:41 Uhr
Kein Problem 🙂 Es gibt normalerweise mehr als eine Möglichkeit, eine Katze zu häuten. Ich wollte nur bestätigen, dass mein Ansatz funktioniert. Verwendung der <form onsubmit="..."> wie du vorgeschlagen hast funktioniert es auch 🙂
– dana
4. Juni 13 um 2:08 Uhr
rybo111
Vermeiden Sie Inline-JavaScript – Eine Änderung des Verhaltens würde bedeuten, jede Instanz des Codes zu bearbeiten, und das ist nicht schön!
Ein viel saubererer Weg ist die Verwendung eines Datenattributs für das Element, z data-confirm="Your message here". Mein Code unten unterstützt die folgenden Aktionen, einschließlich dynamisch generierter Elemente:
<!-- hyperlink example -->
<a href="http://www.example.com" data-confirm="Are you sure you want to load this URL?">Anchor</a>
<!-- button example -->
<button type="button" data-confirm="Are you sure you want to click the button?">Button</button>
<!-- form example -->
<form action="http://www.example.com" data-confirm="Are you sure you want to submit the form?">
<button type="submit">Submit</button>
</form>
<!-- select option example -->
<select>
<option>Select an option:</option>
<option data-confirm="Are you want to select this option?">Here</option>
</select>
Sie müssen eine benutzerdefinierte erstellen bestätigenBox. Es ist nicht möglich, die Schaltflächen in dem von der Bestätigungsfunktion angezeigten Dialog zu ändern.
<script>
function doSomething(){
document.getElementById('id_confrmdiv').style.display="block"; //this is the replace of this line
document.getElementById('id_truebtn').onclick = function(){
// Do your delete operation
alert('true');
};
document.getElementById('id_falsebtn').onclick = function(){
alert('false');
return false;
};
}
</script>
So schön auch.. ziemlich einfach, reines Javascript und nicht so viel CSS. Gefällt mir 😀
– m3nda
3. August 15 um 10:56 Uhr
Bestätigungsfelder sollten verschwinden, sobald ein Element gedrückt wird. Außerdem sollten Sie Klassen und keine IDs verwenden.
– rybo111
27. Dezember 15 um 11:47 Uhr
@rogerdpack Ich habe Fiddle aktualisiert, lass es mich wissen, wenn du etwas von meiner Seite benötigst 🙂
– Keval Bhatt
20. Oktober 16 um 6:24 Uhr
@rogerdpack Wenn Sie die Antwort mögen, können Sie abstimmen: P
– Keval Bhatt
21. Oktober 16 um 9:33 Uhr
Leute, ihr habt ziemlich gute Beispiele, das ist ein POC. Wenn es Ihnen nicht gefällt, passen Sie es an Ihre Bedürfnisse an und geben Sie dem Autor keine Schuld. Hinweis: Der jquery-Bestätigungsbox-Beispiellink funktioniert nicht mehr. Übrigens ist Pure JS ein großartiges Beispiel.
– m3nda
4. August 21 um 8:18 Uhr
geschw
Dieses Plugin kann Ihnen dabei helfen jquery-confirm Einfach zu verwenden
So schön auch.. ziemlich einfach, reines Javascript und nicht so viel CSS. Gefällt mir 😀
– m3nda
3. August 15 um 10:56 Uhr
Bestätigungsfelder sollten verschwinden, sobald ein Element gedrückt wird. Außerdem sollten Sie Klassen und keine IDs verwenden.
– rybo111
27. Dezember 15 um 11:47 Uhr
@rogerdpack Ich habe Fiddle aktualisiert, lass es mich wissen, wenn du etwas von meiner Seite benötigst 🙂
– Keval Bhatt
20. Oktober 16 um 6:24 Uhr
@rogerdpack Wenn Sie die Antwort mögen, können Sie abstimmen: P
– Keval Bhatt
21. Oktober 16 um 9:33 Uhr
Leute, ihr habt ziemlich gute Beispiele, das ist ein POC. Wenn es Ihnen nicht gefällt, passen Sie es an Ihre Bedürfnisse an und geben Sie dem Autor keine Schuld. Hinweis: Der jquery-Bestätigungsbox-Beispiellink funktioniert nicht mehr. Übrigens ist Pure JS ein großartiges Beispiel.
– m3nda
4. August 21 um 8:18 Uhr
Edric
Oder einfach:
<a href="https://some-link.com/" onclick="return confirm('Are you sure you want to go to that link?');">click me!</a>
Danke schön! Ich hatte Angst, dass ich jQuery in meine einfache CRUD-App einbauen müsste, nur um ein einfaches „Wollen Sie das wirklich löschen?
– Will Matheson
6. Juni 19 um 18:41 Uhr
.
7587200cookie-checkSo erstellen Sie einen Dialog mit den Optionen „Ok“ und „Abbrechen“.yes