2010-10-01 2 views
4

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

Вот основной 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 для 'пролета' и его события нажатия:

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

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

+1

Это действительно хороший вопрос, который, вероятно, получить больше просмотров, если он был назван «Переопределение встроенного Javascript представить метод на форме» –

ответ

5

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

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

var myform = document.myForm; 
myform.setAttribute('action', 'javascript:evtSubmit();'); 
+0

Гочи , будет ли переписывать событие «submit» на прототипе объекта решить проблему? – CoryDorning

+0

Человек, ты спасаешь мой день! :) – BananaDeveloper

Смежные вопросы