2009-11-09 7 views
30

Wyświetlane jest pole potwierdzenia JavaScript, gdy użytkownik kliknie przycisk "Usuń dane". Ja wyświetlając go w sposób pokazany na tym zdjęciu:JavaScript: Jak domyślnie wybrać "Anuluj" w polu potwierdzenia?

alt text

W obrazie, przycisk „OK” jest domyślnie zaznaczona. Chcę domyślnie wybrać przycisk "Anuluj", aby w razie przypadkowego naciśnięcia klawisza wpisać klucz, a zapisy będą bezpieczne i nie zostaną usunięte.

Czy jest jakiś sposób w JavaScript, aby wybrać przycisk "Anuluj" domyślnie?

+7

IMHO, nie należy używać przycisków OK/Cancel ani Yes/No w oknach dialogowych. Lepiej utwórz własne okno dialogowe w HTML i użyj przycisków "Usuń dane" i "Przerwij usuwanie". W ten sposób użytkownicy nie będą musieli czytać długiego tekstu, tylko przyciski. Oznacza to, że zawsze dołączaj czasownik do etykiety przycisku. –

+2

@Crescent: To twój wybór, możesz używać tego typu rzeczy w swoich aplikacjach. Nie jestem zainteresowany, dzięki. – Prashant

+0

@ Markus, tak zawsze lepiej używać niestandardowych okien wiadomości, ale chcę tylko wiedzieć, czy istnieje jakiś sposób ustawienia domyślnego przycisku w normalnym oknie potwierdzenia javascript. – Prashant

Odpowiedz

10

Jeśli można użyć wtyczka jQuery to tutaj jest ładny jeden

jQuery Impromptu

Aby zmienić domyślny koncentruje przycisk:

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

Jakieś powody głosowania w dół? – rahul

+0

Subtelny problem z tym rozwiązaniem polega na tym, że łamie on konwencje interfejsu UI platformy: chociaż system Windows stawia OK przed anulowaniem, większość innych graficznych systemów operacyjnych ma odwrócone kolejność. Prawdopodobnie nie jest to jednak wielka sprawa :) – Nick

4

Nie sądzę, że możesz to zrobić.

Ale na pewno można utrudnić użytkownikowi przypadkowo „uzgodnić” z potwierdzeniem, na przykład poprzez zmuszanie użytkownika do „Y” wpisać w polu tekstowym:

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

-1 Javascript 'prompt' jest diabłem. –

+2

@ josh- możesz wyjaśnić? – Yarin

+0

Przeglądarki @Yarin mają ustawienia/opcje, aby jawnie wyłączyć te monity. Wystarczająco powiedziane. –

9

Nie możesz tego zrobić, ale możesz użyć/napisać własne okno dialogowe, które jest wyświetlane przy użyciu elementów DOM (jak sugerował phoenix, po prostu nie musi to być ta konkretna wtyczka jQuery, możesz napisać własną lub użyć wtyczka z innej struktury JS).

Odpowiedzi "użyj jQuery + plugin X" zaczynają denerwować. Istnieje wiele bibliotek JS i jeszcze więcej wtyczek. Na przykład użycie dowolnej biblioteki JS tutaj jest niepotrzebne, jeśli chcesz wyświetlić niestandardowe okno dialogowe. Chociaż jest to szybkie rozwiązanie/odpowiedź, takie odpowiedzi powodują więcej szkód w dłuższej perspektywie, niż w dobrym stanie. Osoby początkujące w JavaScript lub programowaniu w ogóle zaczynają myśleć, że jQuery i/lub wtyczki są jedyną drogą do przejścia i zawierają bibliotekę 50kb +, aby napisać 3 własne wiersze (które czasami nawet nie używają biblioteki: D).

Moim zdaniem komentarz Markusa Johnssona jest najlepszą odpowiedzią, szkoda, że ​​nie został opublikowany jako jeden.

+0

Cóż, to prawie prawda, ale nie zapominaj, że każda najnowsza przeglądarka ma jQuery w pamięci podręcznej. – AbiusX

+2

@AbiusX, pamięć podręczna nie jest współdzielona między różnymi witrynami. Przeglądarki nie mogą przechowywać kopii lokalnej, ponieważ nie ma możliwości sprawdzenia, czy '' jest w rzeczywistości jQuery. Popraw mnie, jeśli się mylę. –

+0

+1 za unikanie niepotrzebnych wtyczek – Medorator

Powiązane problemy