JavaScript: Wie wähle ich im Bestätigungsfeld standardmäßig “Abbrechen” aus?

Lesezeit: 4 Minuten

Benutzer-Avatar
djmzfKnm

Ich zeige ein JavaScript-Bestätigungsfeld an, wenn der Benutzer auf die Schaltfläche “Daten löschen” klickt. Ich zeige es wie in diesem Bild gezeigt:

Alt-Text

Im Bild ist die Schaltfläche “OK” standardmäßig ausgewählt. Ich möchte standardmäßig die Schaltfläche “Abbrechen” auswählen, damit der Benutzer versehentlich die Eintreten Schlüssel sind die Aufzeichnungen sicher und werden nicht gelöscht.

Gibt es in JavaScript eine Möglichkeit, standardmäßig die Schaltfläche “Abbrechen” auszuwählen?

  • IMHO sollten Sie in Dialogen keine Schaltflächen OK/Abbrechen oder Ja/Nein verwenden. Erstellen Sie besser Ihren eigenen Dialog in HTML und haben Sie Schaltflächen mit der Aufschrift “Daten entfernen” und “Entfernung abbrechen”. Auf diese Weise müssen Benutzer nicht den langen Text lesen, sondern nur die Schaltflächen. Fügen Sie also immer ein Verb in die Beschriftung einer Schaltfläche ein.

    – Markus Johnson

    9. November 2009 um 7:40 Uhr

  • @Crescent: Es ist Ihre Wahl, es steht Ihnen frei, diese Art von Zeug in Ihren Apps zu verwenden. Ich bin nicht interessiert, danke.

    – djmzfKnm

    9. November 2009 um 16:47 Uhr

  • @Markus, ja, es ist immer besser, benutzerdefinierte Meldungsfelder zu verwenden, aber ich möchte nur wissen, ob es eine Möglichkeit gibt, die Standardschaltfläche im normalen Javascript-Bestätigungsfeld festzulegen.

    – djmzfKnm

    9. November 2009 um 16:48 Uhr

  • Beachten Sie, dass es Fälle gibt, in denen Sie den Browser blockieren müssen, bevor Sie aus dem Dialogfeld zurückkehren, z. B. wenn Sie entscheiden müssen, ob Sie ein aktuelles Ereignis abbrechen möchten. In diesen Fällen können Sie keine DOM-basierten Dialoge verwenden, sondern nur window.alert oder .confirm

    – Sinus

    2. Januar 2014 um 16:59 Uhr


Benutzer-Avatar
Maiku Mori

Sie können das nicht tun, aber Sie könnten Ihren eigenen Dialog verwenden/schreiben, der mit DOM-Elementen angezeigt wird (wie von Phoenix vorgeschlagen, es muss einfach nicht dieses bestimmte jQuery-Plugin sein, Sie können Ihr eigenes schreiben oder ein Plugin von einem anderen verwenden JS-Framework).

Die Antworten “benutze jQuery + Plugin X” werden langsam nervig. Es gibt viele JS-Bibliotheken und noch mehr Plugins. Beispielsweise ist die Verwendung einer JS-Bibliothek hier nicht erforderlich, wenn Sie nur einen benutzerdefinierten Dialog anzeigen möchten. Während es sich um eine schnelle Lösung/Antwort handelt, schaden solche Antworten auf lange Sicht mehr als sie nützen. Leute, die neu in JavaScript oder Programmieren im Allgemeinen sind, beginnen zu denken, dass jQuery und / oder Plugins der einzige Weg sind, und sie enthalten eine Bibliothek von mehr als 50 KB, nur um 3 eigene Zeilen zu schreiben (die manchmal nicht einmal die Bibliothek verwenden: D).

Meiner Meinung nach ist der Kommentar von Markus Johnsson die beste Antwort, es ist eine Schande, dass er nicht als einer gepostet wird.

  • Nun, es ist fast wahr, aber vergessen Sie nicht die Tatsache, dass jeder neuere Browser jQuery in seinem Cache hat.

    – AbiusX

    18. August 2011 um 14:15 Uhr

  • @AbiusX, der Cache wird nicht zwischen verschiedenen Sites geteilt. Browser können auch keine lokale Kopie speichern, da sie dies nicht überprüfen können <script type="text/javascript" src="jquery.js"></script> ist in der Tat jQuery. Korrigieren Sie mich, wenn ich falsch liege.

    – Maiku Mori

    18. August 2011 um 14:26 Uhr


  • Für diejenigen, die jQuery nicht verwenden möchten, gibt es viele Alternativen, einschließlich der Möglichkeit, alles von Grund auf neu zu erstellen. Jedoch, In diesem Fall hat das OP die Frage mit “jQuery” markiert, also verwenden sie sie vermutlich bereits – oder haben sie zumindest gegenüber anderen Bibliotheken bevorzugt. So nicht Die Verwendung für Dialoge würde zu noch mehr Code führen, der mit der betreffenden Webseite verknüpft ist.

    – nnnnn

    20. September 2014 um 8:03 Uhr

Benutzer-Avatar
rahul

Wenn Sie das jQuery-Plugin verwenden können, dann ist hier ein nettes

jQuery spontan

So ändern Sie die standardmäßig fokussierte Schaltfläche:

$.prompt('Example 4',{ buttons: { Ok: true, Cancel: false }, focus: 1 });

  • Ein subtiles Problem bei dieser Lösung besteht darin, dass sie die Plattform-UI-Konventionen bricht: Obwohl Windows OK vor Cancel setzt, haben die meisten anderen grafischen Betriebssysteme die Reihenfolge umgekehrt. Ist aber wahrscheinlich keine große Sache 🙂

    – Nick

    23. Juli 2014 um 18:04 Uhr

Ich glaube nicht, dass du das kannst.

Aber Sie können es dem Benutzer auf jeden Fall erschweren, der Bestätigung versehentlich zu ‘zustimmen’, indem Sie den Benutzer beispielsweise zwingen, ‘y’ in ein Eingabefeld einzugeben:

agree = (prompt("Type 'y' to accept", '') == 'y');

  • @Yarin-Browser haben Einstellungen/Optionen, um diese Eingabeaufforderungen explizit zu deaktivieren. Genug gesagt.

    – Josh Stodola

    26. Dezember 2011 um 19:35 Uhr

  • Lächerlich, Eingabeaufforderungen sind in Ordnung. Und besser als einfache Knöpfe in Situationen, in denen die Wahl des falschen zu Unglück führen könnte. Wie etwas Großes zu löschen oder etwas Bedeutendem zuzustimmen: Fordern Sie den Benutzer auf, „Ja“ EINzugeben.

    – T4NK3R

    18. März 2016 um 7:24 Uhr

  • Sagt, dass prompt ist böse ist dasselbe wie das zu sagen goto böse ist (was viele Leute tun), ohne das zu erkennen gotoso wie prompt, ist ein Tool, das völlig legitime Anwendungsfälle hat. Es unsachgemäß zu verwenden ist eine schlechte Idee, aber das ist nicht das Problem mit dem Tool selbst.

    – Dmitri Frank

    11. September 2018 um 20:22 Uhr

das hat bei mir funktioniert

function confirmAction(){
  if(prompt("Type 'YeS' to confirm, this action is irreversible.", '') == 'YeS'){
      another();
  }else{
    alert("Canceled!!!");
  }
}
function another(){
  alert("suuccess");
}
<button onClick="return confirmAction()">Confirm</button>
1225480cookie-checkJavaScript: Wie wähle ich im Bestätigungsfeld standardmäßig “Abbrechen” aus?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy