Отправить прослушиватель событий для формы - PullRequest
5 голосов
/ 01 октября 2010

Я написал прослушиватель событий для отправки формы, который вызывает у меня несколько проблем. При нажатии «ввод» внутри текстового поля все работает нормально. Тем не менее, у меня есть диапазон (с background-image), который также отправляет форму через событие щелчка. Это не работает должным образом, и я не могу понять, почему.

Вот основной HTML:

<form name="myForm">
  <input type="text" name="search" />
  <span id="search-button"></span>
</form>

Вот JS для прослушивателя событий:

function evtSubmit(e) {
  // code
  e.preventDefault();
};

var myform = document.myForm;
if (myform.addEventListener) {
  myform.addEventListener('submit', evtSubmit, false);
}

А вот JS для 'span' и события клика:

var searchButton = document.getElementById('search-button');
if (searchButton) {
 searchButton.onclick = function() {
  document.myForm.submit();
 };
}

ПРИМЕЧАНИЕ. JS для события click диапазона находится в отдельном файле JS и недоступном атм, поэтому изменение этого сценария является менее подходящим вариантом. Если единственный способ решить эту проблему - это обновить этот файл, я могу ... но из-за процессов, не зависящих от меня, это намного сложнее.

1 Ответ

6 голосов
/ 01 октября 2010

При вызове form.submit() событие onsubmit не будет инициировано.В качестве альтернативы вы можете установить атрибут действия на javascript:evtSubmit(event):

function evtSubmit(e) {
  // code
  e.preventDefault();
};

var myform = document.myForm;
myform.setAttribute('action', 'javascript:evtSubmit();');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...