2017-05-07 58 views
1

我无法停止表单内部提交的传播。看起来无论我在网页中点击什么地方,都会触发一个事件 - 如何固定它,只需点击提交按钮即可触发?stopPropagation()在提交不起作用

document.addEventListener('DOMContentLoaded', bindButtons); 

function bindButtons() { 
    var buttons = document.getElementsByTagName('submit'); 

    Array.prototype.forEach.call(buttons, addEventListener('click', function(event) { 
     var req = new XMLHttpRequest(); 
     req.open("GET", url, true); 

     req.addEventListener('load', function(event) { 
      // do stuff 
     }) 

     event.preventDefault(); 
     event.stopPropagation(); 

     req.send(null);  
    })) 
} 
+1

''是不是有效的标记名称。 – n00dl3

+0

@ n00dl3哎呀..谢谢。那么人们是否只需要将它们添加到同一个类,如果他们想循环提交? – cafekaze

回答

1

提交不是有效的标签,你可以找到你的提交按钮用下面的代码:

var submitButtons = document.getElementByTagNames('button').filter(button => button.getAttribute('type') === 'submit'); 

,或者更详细:

var submitButtons = document.getElementByTagNames('button').filter(function(button){ 
    return (button.getAttribute('type') === 'submit') 
); 
0

添加的每个submit同一类然后被存储在那些使用getElementsByClass()和遍历一个数组。