Uwaga ten problem może nie dotyczyć opinii publicznej, ponieważ nie występuje, chyba że jesteś szybkim kliknięciem. (150-200ms/kliknięcie) Powodem, dla którego publikuję ten problem jest to, że moja aplikacja ma formularz z 20+ polami wyboru obok siebie, a po szeroko zakrojonych badaniach nie znalazłem żadnych powiązanych pytań na ten temat.Zapobieganie błędowi dwukrotnego kliknięcia przy użyciu kombinacji pole wyboru i etykieta
Oto uproszczony scenariusz - 4 pól i 4 etykiety, po jednym dla każdego ID checkbox:
[CB1] Label 1
[CB2] Label 2
[CB3] Label 3
[CB4] Label 4
Przyjmijmy, w każdym przypadku wszystkich BC są zaznaczone.
oczekiwane zachowanie:
- klikam na 4 BC w krótkim odstępie czasu, wszystkie one stają się sprawdził. (true)
- Klikam na 4 Etykiety w krótkim odstępie czasu, a odpowiednie CB zostają sprawdzone. (Prawdziwe tylko dla Chrome, ale nadal nie jest optymalny)
rzeczywiste zachowanie dla przypadku 2 na Win 7 (klikając na etykietach, bo jak wiesz, etykiety są duże i styl-stanie i pola wyboru są małe i OS-zależne):
- (w Firefoksie 19) CB2 i CB4 są pozostawione bez kontroli, a idąc w dół listy słowo „Label” zostanie podświetlony na etykieta 2 i etykiety 4, jakbym podwójnym kliknięciu na nich.
- (W Chrome 26) Wszystkie jednostki certyfikujące są poprawnie sprawdzane, ale podczas wchodzenia na listę słowo "etykieta" zostaje podświetlone dla etykiety 2 i etykiety 4, tak jakbym dwukrotnie je kliknął.
- (W IE 10) CB2 i CB4 pozostają niezaznaczone, ale bez podświetlania podświetlonego.
Błędne zachowanie może być uzasadnione, jeśli kliknięcia są na tym samym elemencie. W naszym przypadku są to wyraźnie unikalne pola wyboru z różnymi identyfikatorami i nazwami. Wyniki są więc zaskakująco niespodziewane.
Więc moje pytanie brzmi:
Czy istnieje sposób Wyłącz wypalanie kliknij dwukrotnie zdarzenie, kiedy szybko kliknij na różnych wyboru, ale wciąż jeszcze sprawdzić je z szybkich pojedynczych kliknięć?
Najbliżej Doszedłem do jest następujący skrypt, który ciekawie wykonane Firefox zachowywać się jak Chrome i Chrome zachowuje się jak Firefox:
jQuery(document).on('dblclick', 'input:checkbox+label', function(event){
console.log('ugly hack fired');
$(this).click();
event.preventDefault();
})
Proszę dać mi znać, jeśli jakikolwiek prostsze podejście będzie działać. Na moje testy inne sugestie dotyczące dblclick nie działały. –