2017-05-29 46 views
5

Mam this kod html poniżej.Zdarzenie onclick wyłączone <td> działa tylko po kliknięciu tekstu, ale nie po kliknięciu innego obszaru w td (tj. 10, czyli wydanie 11).

<table border="1" style="width:100%"> 
 
<tr> <th>Col</th></tr> 
 
    <tr><td onclick="alert('1');" disabled="disabled"><label>One<br></label></td></tr> 
 
    <tr><td onclick="alert('2');" disabled="disabled"><label>Two<br></label></td></tr> 
 
    <tr><td onclick="alert('3');" disabled="disabled"><label><br></label></td></tr> 
 
</table>

Powyższy kod działa w Chrome i Microsoft Edge Oznacza to pokazuje alert na kliknięcie w dowolnym miejscu wewnątrz znacznika td we wszystkich 3 TDS.
Ale w IE10, IE11 działa tylko wtedy, gdy td zawiera pewne dane, tak jak w powyższym kodzie 3. wiersz nie daje ostrzeżenia, a dla innych tds działa tylko wtedy, gdy klikamy na tekst, a nie klikamy w inny obszar wewnątrz td inny niż tekst.

Ten kod jest częścią mojej dużej aplikacji. Po prostu chcę wiedzieć, to jest znany błąd w IE, jeśli tak, to może ktoś mi podać link tego błędu.
A może brakuje mi czegoś w kodzie, który powoduje problem. Ponieważ jest to część dużej aplikacji, chcę dodać mniej kodu, aby nie wpłynęło to na resztę aplikacji.

Każda pomoc będzie mile widziane

+0

Twoje wykorzystanie starego wzoru projektu .... Co próbujesz osiągnąć? Sortable columns in a table? Zamiast tego użyj przycisku lub. Tabele i komórki są elementami prezentacji. Przycisk a i to elementy akcji. powinieneś powiązać z nimi zdarzenia akcji. –

+0

Nie wspominasz o tym, co można zmienić, a co nie w kodzie. IE ma sens: wyłączyłeś td, więc nie zarejestrowano żadnych akcji myszy. Po usunięciu wyłączonego atrybutu kliknięcie działa również w IE dla całego td. Kiedy to można zmienić w html (zastanawiam się z powodu wyłączenia), oczywiście można to zrobić w JavaScript po załadowaniu strony. I bądź dobrym chłopcem i dodaj tam także obsługę zdarzeń ;-) – msoft

+0

Proszę podać kilka informacji na swoje pytanie dotyczące tego, co możesz * zrobić *. Wspomniałeś w swoim drugim komentarzu, że nie możesz usunąć osoby niepełnosprawnej. Czy jest to wymagane przez inny kod, czy też można go usunąć po załadowaniu strony przez JavaScript. Jeśli tak, czy możesz dodać identyfikator lub klasę do tej tabeli, aby JavaScript mógł ją znaleźć? I chyba nie ma jQuery, ponieważ jest to stary kod. – msoft

Odpowiedz

1

Zgodnie z docs: https://msdn.microsoft.com/en-us/library/ms533732(v=vs.85).aspx,

elementy niepełnosprawnych nie reagują na zdarzenia myszy

Przetestowałem kod w IE11 i działa bez właściwość disabled. Pomyślałem, że może to być specyficzny problem z numerem td, więc dodałem onclick do div i działa równie dobrze, o ile nie ma atrybutu disabled.

Test this on IE11

+0

Wygląda na to, że odpowiadasz, a mój komentarz do pytania był mniej więcej w tym samym czasie. Z tą samą zawartością. Chociaż nadal nie jesteśmy pewni, czy można usunąć "niepełnosprawnych". Jeśli nie, ta odpowiedź nie jest kompletna ;-) – msoft

+0

@msoft nie powinien używać 'disabled' na elementach, które nie akceptują tego atrybutu. Myślę, że atrybuty "danych- *" lepiej by pasowały do ​​tego zadania. –

+1

pewna rzecz! Ale często ktoś musi pracować nad "istniejącym" kodem, który zależy od dziwnych ustawień, takich jak ten. Chciałem tylko wiedzieć, czy tak też jest w tym przypadku. Nie, żebym mógł wymyślić powód, dla którego ktoś chce tego w td, ale natknąłem się na dziwniejsze rzeczy ... – msoft