Onclick/onchange отменяют друг друга

поэтому у меня есть форма, одно из ее полей вызывает функцию JavaScript, чтобы внести некоторые изменения в содержимое некоторых других полей.

Вот так:

<form>
   <select onchange="montarconselho(distrito,'concelho');" id="distrito">

    other selects here...

   <input onclick="return submitform()" type="submit"id="inserir"/>
<form

Теперь проблема, с которой я сталкиваюсь, заключается в том, что если я оставлю вызов функции onclick, функция onchange для выбора перестанет работать.

Если я стираю вызов onclick с кнопки, onchange на select начинает работать!

Функции каждой из них не имеют ничего общего друг с другом, поэтому я понятия не имею, что происходит.

Респект тому, кто ответит!


person user1902521    schedule 13.12.2012    source источник
comment
Элементы select обычно не являются самозакрывающимися. Там у вас должно быть несколько вариантов. Кроме того, последний тег на самом деле </form>, верно?   -  person Asad Saeeduddin    schedule 14.12.2012
comment
почему бы не добавить обработчик onsubmit в форму?   -  person zb'    schedule 14.12.2012


Ответы (2)


У меня есть небольшая вариация той же проблемы. Мой onchange находится на вводе текста. Я меняю входное значение, но оставляю фокус на этом входе. Затем я использую мышь, чтобы щелкнуть кнопку (или нажать клавишу доступа), которая должна вызвать щелчок.

В моем случае onchange запускается, но onclick никогда не срабатывает или останавливается до вызова обработчика.

Onchange запускает краткий процесс ajax.

Если я выхожу из ввода перед нажатием кнопки, оба события работают правильно. Как будто браузер отменяет регистрацию прослушивателя событий onclick до тех пор, пока onchange не завершится.

......

Ага! Написав это, я обнаружил хитрую ловушку. Мой обработчик onchange начал с отключения всех входных данных формы во время его работы. Дух.

Шансы на то, что это решение вашей проблемы, кажутся небольшими, но это показывает, как усердно вам иногда приходится смотреть на свой код, чтобы найти ошибку. Вы можете попробовать немного привести свой код в порядок: ';' после submitform() пробел перед id=, два открывающих тега формы подряд?

person HalfTitle    schedule 26.12.2012

Убедитесь, что ваш код написан так:

HTML:

<form action="/echo/json/">
  <select onchange="montarconselho(distrito,'concelho');" id="distrito">
   <option value"0">0</option>
   <option value"1">1</option>
   <option value"2">2</option>
  </select>    



 <input onclick="return submitform()" type="submit" id="inserir"/>
</form>​

JS:

var montarconselho​ = function (a,b) {
    alert ('select change');
}

если это не сработает, попробуйте опубликовать фрагмент вашего «реального» кода.

person joeyramone76    schedule 26.12.2012