Mam okno dialogowe jQuery, które wymaga od użytkownika wprowadzenia pewnych informacji. W tej formie mam przycisk „kontynuuj”. Chciałbym, aby ten przycisk „Kontynuuj” był włączony tylko wtedy, gdy wszystkie pola zawierają w sobie zawartość, w przeciwnym razie pozostanie on wyłączony.
Napisałem funkcję, która jest wywoływana za każdym razem, gdy zmienia się status pola. Nie wiem jednak, jak włączyć i wyłączyć przycisk dialogowy w tej funkcji. Co powinienem zrobić?
Ups i zapomniałem wspomnieć, że te przyciski zostały utworzone w następujący sposób:
$(function() {
$("#dialog").dialog({
bgiframe: true,
height: 'auto',
width: 700,
show: 'clip',
hide: 'clip',
modal: true,
buttons: {
'Add to request list': function() {
$(this).dialog('close');
$('form').submit();
},
'Cancel': function() {
$(this).dialog('close');
}
}
})
});
Odpowiedzi:
Chcesz ustawić wyłączoną właściwość
Aktualizacja : Ahha, teraz widzę złożoność. JQuery Dialog miał pojedynczą linię, która będzie miała zastosowanie (w sekcji „Przyciski”.
Będziesz musiał pobrać kolekcję przycisków z okna dialogowego, przejrzeć ją, aby znaleźć potrzebny, a następnie ustawić wyłączony atrybut, jak pokazano powyżej.
źródło
.prop('disabled', true)
jest preferowany w jQueryTo jest bardzo proste:
źródło
.prop('disabled', true)
jest preferowany w jQueryNadmiernie komplikujesz proste zadanie; Okno dialogowe jQueryUI ma dwa sposoby ustawiania przycisków bez podania przyczyny.
Jeśli potrzebujesz tylko ustawić moduł obsługi kliknięć dla każdego przycisku, użyj opcji, która pobiera
Object
argument. Aby wyłączyć przyciski i podać inne atrybuty, użyj opcji, która pobieraArray
argument.Poniższy przykład wyłączy przycisk i poprawnie zaktualizuje jego stan poprzez zastosowanie wszystkich klas i atrybutów jQueryUI CSS.
Krok 1 - Utwórz okno dialogowe za pomocą jednego
Array
z przycisków:Krok 2 - Włącz / wyłącz przycisk Gotowe po utworzeniu okna dialogowego:
źródło
each
pętla jest niepotrzebna. Podajclass
atrybut wbuttons
tablicy i możesz go użyć, aby znaleźć odpowiedni element.Jeśli utworzysz okno dialogowe z identyfikatorami przycisków,
możemy wyłączyć przycisk za pomocą następującego kodu:
źródło
Chciałem móc znaleźć przycisk według nazwy (ponieważ mam kilka przycisków w oknie dialogowym interfejsu użytkownika jQuery). Mam również kilka okien dialogowych na stronie, więc potrzebuję sposobu, aby uzyskać przyciski określonego okna dialogowego. Oto moja funkcja:
źródło
To wyłącza przycisk:
Musisz dodać identyfikator okna dialogowego, jeśli masz kilka okien dialogowych na stronie.
źródło
Oto przykład zmodyfikowanego pytania, aby wyłączyć przycisk po kliknięciu:
Pomocne będzie również następujące pytanie: Jak mogę wyłączyć przycisk w oknie dialogowym interfejsu użytkownika jQuery?
źródło
Znalazłem prosty sposób na wyłączenie (lub wykonanie dowolnej innej akcji) na przycisku okna dialogowego.
Po prostu wybierz element nadrzędny swojego okna dialogowego i znajdź wszystkie przyciski. Następnie sprawdzając tekst przycisku, możesz zidentyfikować swoje przyciski.
źródło
Mam tę pracę z metodą,
.dialog("widget")
która zwraca samo okno dialogowe DIV. Jeśli jesteś w oknie dialogowym metody:źródło
Z punktu widzenia użyteczności zwykle lepiej pozostawić włączony przycisk, ale wyświetlać komunikat o błędzie, jeśli ktoś próbuje wysłać niekompletny formularz. Doprowadza mnie to do szału, kiedy przycisk, który chcę kliknąć, jest wyłączony i nie mam pojęcia, dlaczego.
źródło
Spróbuj tego:
źródło
Oto moja funkcja enableOk dla okna dialogowego jQuery:
Przycisk „pierwszy” znajduje się najdalej po prawej stronie. Oboje wyłączacie przycisk i ustawiacie wyłączoną klasę okna dialogowego, aby uzyskać odpowiedni efekt wizualny.
źródło
W starszym jQuery UI (wersja 1.7.3) mogłem po prostu użyć
po prostu wyłączyć przycisk na samym elemencie DOM. Po zaktualizowaniu do nowszego interfejsu użytkownika jQuery (wersja 1.8.7) ta metoda nie działa już w przeglądarce Firefox, ale mogę po prostu wywołać funkcję wyłączania i włączania przycisków interfejsu użytkownika jquery w obiektach przycisku jquery:
źródło
haha, właśnie znalazłem ciekawą metodę dostępu do butelek
Wygląda na to, że nie wszyscy wiecie, że w argumentach znajduje się obiekt zdarzenia ...
nawiasem mówiąc, po prostu uzyskuje dostęp do przycisku z oddzwaniania, w ogólnych przypadkach dobrze jest dodać identyfikator dostępu
źródło
Jeśli naprawdę chcesz wyłączyć przycisk, zauważyłem, że musisz także wywołać na nim metodę .unbind (). W przeciwnym razie przycisk może być nadal aktywny, a dwukrotne kliknięcie może prowadzić do przesyłania wielu formularzy. Poniższy kod działa dla mnie:
źródło
Znalazłem obejście, które może dotyczyć osób próbujących zrobić coś podobnego. Zamiast wyłączyć przycisk, postawiłem prosty
if
instrukcję do funkcji, aby sprawdzić, czy pole wyboru zostało zaznaczone.Jeśli nie, wyświetlał prosty komunikat informujący, że pole należy sprawdzić przed przesłaniem.
Na przykład:
W każdym razie mam nadzieję, że to komuś pomoże.
źródło
Stworzyłem funkcję jQuery, aby nieco ułatwić to zadanie. Po prostu dodaj to do pliku JavaScript:
Wyłącz przycisk „OK” w oknie dialogowym z klasą „okno dialogowe”:
Włącz wszystkie przyciski:
Włącz przycisk „Zamknij” i zmień kolor:
Mam nadzieję, że to pomoże.
źródło
Niestety żadne z podanych tutaj rozwiązań nie działało w kilku oknach dialogowych na stronie.
Problem polegał również na tym, że oryginalne okno dialogowe nie zawiera samego panelu przycisków, ale jest jego rodzeństwem.
Wymyśliłem więc, wybierając takie okno dialogowe:
...
...
a następnie ta sama funkcja getFirstDialogButton () może być później użyta do włączenia przycisku, np. po pomyślnym sprawdzeniu poprawności.
Mam nadzieję, że może komuś pomóc.
źródło
Oto przykład, który właśnie wdrożyłem przy użyciu metody Array przypisywania przycisków, która pozwala mi później używać selektorów identyfikatorów - tak jak pierwotnie przyjęta odpowiedź - aby włączyć / wyłączyć przyciski, a nawet pokazać / ukryć je całkowicie, gdy jestem robić.
Po pomyślnym przesłaniu wyłączam i ukrywam dwa przyciski oraz włączam przycisk OK, który był domyślnie wyłączony.
Mam nadzieję że to pomoże.
źródło
Utworzyłem funkcję podobną do tej, którą zrobił Nick, ale moja metoda nie wymagałaby ustawiania parametru dialogClass, a za pomocą identyfikatora można uzyskać przyciski określonego okna dialogowego (jeśli w aplikacji istnieje więcej niż jeden)
Więc jeśli utworzyłeś takie okno dialogowe:
Możesz uzyskać przyciski, wykonując następujące czynności:
Wyłączyć:
Umożliwić:
źródło
Dla przypomnienia ten post pomógł mi rozwiązać problem. Krótko mówiąc, musisz ustawić atrybut disabled na disabled, a nie na false:
Oto jak wygląda cały kod. Dodałem też kilka stylów, aby wyglądał na wyłączony:
źródło
Myślę, że to powinno działać ze wszystkimi,
źródło
Aby wyłączyć przycisk Zapisz w moim oknie dialogowym, użyj następującego wiersza w swojej funkcji.
Aby zmienić tekst w przycisku, użyj następującego wiersza (to zmienia tekst przycisku Anuluj na Zamknij mnie)
źródło
@Chris Możesz użyć następujących wierszy kodu, aby włączyć / wyłączyć przyciski dialogowe, dopóki nie zaznaczysz / nie zaznaczysz pola wyboru
Oryginalne źródło: http://jsfiddle.net/nick_craver/rxZPv/1/
źródło
Wywołanie
.attr("disabled", true)
oczywiście działa, ale używając jQuery chciałbyś to zrobić w bardziej „cukrowy” sposób, więc napisałem proste rozszerzenie:Teraz masz funkcje
enable()
idisable()
możesz wykonywać swoją pracę w ten sposób:Który jest taki sam jak
i
źródło
To zrobiło dla mnie zadanie:
źródło
W świecie jQuery, jeśli chcesz wybrać obiekt z zestawu elementów DOM, powinieneś użyć eq () .
Przykłady:
lub
źródło
Zgodnie z dokumentacją :
https://api.jqueryui.com/dialog/#option-buttons
Aby móc po prostu wybrać przycisk, możesz dodać własną klasę CSS do przycisku, który powinien być włączony / wyłączony.
Następnie włączenie / wyłączenie wyglądałoby następująco:
źródło
Jeśli ktoś chce zastąpić przycisk animacją ładowania po kliknięciu (na przykład, gdy przycisk „Prześlij” przesyła formularz w oknie dialogowym) - możesz zastąpić przycisk obrazem w następujący sposób:
jQuery replaceWith docs
źródło
Aby wyłączyć jeden przycisk, w oknie dialogowym otwórz:
źródło