Javascript 提交表单的事件侦听器

Javascript 提交表单的事件侦听器,javascript,dom-events,form-submit,Javascript,Dom Events,Form Submit,我已经为表单提交编写了一个事件侦听器,这给我带来了一些问题。在文本字段内按“回车”键时,一切正常。但是,我有一个span(带有背景图像),它也通过单击事件提交表单。这是不正常的工作,我不明白为什么 以下是基本的HTML: <form name="myForm"> <input type="text" name="search" /> <span id="search-button"

我已经为表单提交编写了一个事件侦听器,这给我带来了一些问题。在文本字段内按“回车”键时,一切正常。但是,我有一个span(带有背景图像),它也通过单击事件提交表单。这是不正常的工作,我不明白为什么

以下是基本的HTML:

<form name="myForm">
  <input type="text" name="search" />
  <span id="search-button"></span>
</form>
以下是“span”及其点击事件的JS:

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

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

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


明白了。重写原型对象上的“提交”事件可以解决问题吗?伙计,你救了我一天!:)@raphael75请尝试上面代码中建议的
javascript:evtSubmit(event)
。这实际上是一个很好的问题,如果标题为“重写表单上的内置javascript提交方法”,可能会获得更多视图
var searchButton = document.getElementById('search-button');
if (searchButton) {
 searchButton.onclick = function() {
  document.myForm.submit();
 };
}
function evtSubmit(e) {
  // code
  e.preventDefault();
};

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