提交表单的事件监听器

时间:2010-10-01 16:47:32

标签: javascript javascript-events form-submit

我为表单提交编写了一个事件监听器,这引起了一些问题。在文本字段内按“输入”时一切正常。但是,我有一个span(带有background-image),通过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);
}

这里是'span'及其点击事件的JS:

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

注意:span的click事件的JS位于单独的JS文件中且无法访问atm,因此更改该脚本不是一个选项。如果解决此问题的唯一方法是更新该文件,我可以...但由于我无法控制的进程,这要困难得多。

1 个答案:

答案 0 :(得分:6)

调用form.submit()时,不会触发onsubmit事件。您也可以将操作属性设置为javascript:evtSubmit(event)

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

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