Событие onclick не запускается, когда onchange срабатывает непосредственно перед

У меня тут забавная проблема.

У меня есть текстовая область, с которой связано событие onchange. Затем у меня есть кнопка, связанная с событием onclick.

Текст, помещаемый в текстовую область, обрабатывается, когда на текстовой области запускается событие onchange. Обычно это происходит, когда я щелкаю что-то за пределами текстовой области.

То, что я сделал, было следующим:

Я набрал текст в текстовой области. Прямо после ввода я нажимаю кнопку, чтобы вызвать событие onclick для кнопки Ничего не происходит, но событие onchange в области textarea сработало, когда я нажал кнопку, но событие onclick на самой кнопке не сработало.

Зачем? Я ожидал срабатывания onchange и onclick. Есть ли что-нибудь, что мне нужно сделать, чтобы нажатие на кнопку не потерялось. Я понял, что должен щелкнуть дважды, потому что первый щелчок вызывает изменение на текстовой области, а затем второй щелчок вызывает щелчок по кнопке.

Код ниже показывает пример, просто попробуйте код ниже. Введите текст, а затем непосредственно нажмите на эту кнопку. Только всплывающее окно "textarea".

<textarea onchange="processText();" name="mytext"></textarea>
<button onclick="processButton();">Hello</button>
<script language="Javascript">
  function processText()
  {
    alert( 'textarea');
  }

  function processButton()
  {
    alert( 'button');
  }
</script>
 Gavriel23 мая 2012 г., 13:11
где твой код?
 NovumCoder24 мая 2012 г., 15:54
Хм, похоже, это большая проблема.
 JJJ23 мая 2012 г., 13:11
Вам нужно показать код, который показывает проблему. Как вы думаете, кто-нибудь может сказать, в чем проблема, не видя код?
 coolguy23 мая 2012 г., 13:11
Код пожалуйста:) ..

Ответы на вопрос(2)

Решение Вопроса

Тебе нужно проверить свои предположения. В вашем примереalert () прерывает выполнение программы, прерывая обработкупо щелчк. Этот код jsfiddle здесь) демонстрирует, чтопо изменени не мешаетпо щелчк по умолчанию

<textarea onchange="processText();" name="mytext"></t,extarea>
<button onclick="processButton();">Hello</button>
<div id="clicked"></div>
<div id="changed"></div>
<script language="Javascript">
  function processText()
  {
    document.getElementById('changed').innerHTML = "onchange fired";;
  }

  function processButton()
  {
    document.getElementById('clicked').innerHTML = "onclick fired";
  }
</script>​

У меня была похожая проблема, но реальная причина, по которойпо щелчкобытие @ не было обработано, потому что элемент, по которому щелкали, прокручивался вниз в результатепо изменени обработчик. Когда кнопка мыши была отпущена, элемент не получил MouseUp событие и "щелчок" был прерван.

 Peter Brand24 янв. 2015 г., 09:13
У меня было то же самое поведение с событием onchange, заставляющим свиток сдвигать нажатую кнопку из-под мыши - спасибо, Даг. Единственное решение, о котором я мог подумать, - отложить прокрутку после события mouseup.

попробуйте добавить слушатель события в компоненты

document.getElementsByTagName("textarea")[0].addEventListener("change", function(){
    alert( 'textarea');
});

document.getElementsByTagName("button")[0].addEventListener("click", function(){
    alert( 'button');
});

если Идентификаторы определены, тогда используйтеgetElementById ().

Ваш ответ на вопрос