Кнопка IE внутри метки с флажком

У меня такой код:

<li>
    <input type = "checkbox" id = "f6c9677c-309c-446c-9f78-757467ec7adc">
    <label for = "f6c9677c-309c-446c-9f78-757467ec7adc">
        <span> Testigos de la Valoracion </span>
        <button disabled>Button</button>
    </label>
</li>

Проблема в том, что кнопка отключена, и в IE (v11, последняя версия), когда я нажимаю на нее, флажок активируется. Я не могу изменить структуру.

Я попытался зафиксировать событие и предотвратить его распространение и поведение по умолчанию. Ничего не работает.

Во всех остальных браузерах он работает нормально: нажатие на отключенную кнопку ничего не делает.

Есть ли причина иметь кнопку в элементе <label>? (Я знаю, что вы не можете изменить структуру)

KarelG 02.10.2018 12:16

Не совсем. Но я не могу это изменить: S В других браузерах работает хорошо

Sergio Tx 02.10.2018 12:18

Что ж, чтобы исправить это просто, вам нужно всего лишь сделать disabled = "disabled" в этом элементе <button>.

KarelG 02.10.2018 12:18

это не работает. Уже пробовал

Sergio Tx 02.10.2018 12:19
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
4
109
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

<li>
    <input type = "checkbox" id = "f6c9677c-309c-446c-9f78-757467ec7adc">
    <label for = "f6c9677c-309c-446c-9f78-757467ec7adc">
        <span> Testigos de la Valoracion </span>


    </label>
     <button disabled = "disabled">Button</button>
</li>

Я не могу изменить структуру

Sergio Tx 02.10.2018 12:16

Но в чем причина использования кнопки внутри блока меток?

khurshedul barid 02.10.2018 12:18

Если возможно, вы можете использовать div вместо label. Это также решит вашу проблему: |

khurshedul barid 02.10.2018 12:22

Хм. Не мой код. Но это из-за библиотеки, в которой есть getTitle (), и она помещает все внутри метки. Кто-то добавил туда кнопку.

Sergio Tx 02.10.2018 12:23

Но проблема в том, что ярлык для флажка. Итак, в IE его мыслящий весь блок с меткой как единый блок, и всякий раз, когда он нажимает кнопку, он считает, что он ставит флажок: / .IE Самый умный браузер, который вы знаете: P

khurshedul barid 02.10.2018 12:28

Я знаю логику того, что думает IE. Но, похоже, никто так не думает: P

Sergio Tx 02.10.2018 15:47

Поскольку вы не можете изменить структуру, вы можете использовать JavaScript для предотвращения поведения кнопок. Даже инвалиды. Или - к счастью - используйте CSS, чтобы обойти это: pointer-events

label button[disabled] {
  pointer-events: none;
}

Он работает за вас?

Примечание: работает только для IE11 или выше.

Ответ принят как подходящий

Одним из возможных способов решения проблемы может быть предотвращение события по умолчанию, если целью является кнопка:

document.querySelector('label').addEventListener('click', function(e){
  if (e.target.nodeName == 'BUTTON')
    e.preventDefault();
});
<li>
  <input type = "checkbox" id = "f6c9677c-309c-446c-9f78-757467ec7adc">
  <label for = "f6c9677c-309c-446c-9f78-757467ec7adc">
    <span> Testigos de la Valoracion </span>
    <button disabled>Button</button>
  </label>
</li>

Не сработало точно, так как nodeName иногда было "LABEL", но идея предотвращения событий при нажатии на ярлык была тем, что мне помогло. Спасибо

Sergio Tx 02.10.2018 15:46

@SergioTx, добро пожаловать .... вы правы, поэтому IE нас (разработчика) не любит .......

Mamun 02.10.2018 15:57

Другие вопросы по теме