2011-02-07 34 views
0
<select onchange="window.location='/staff/add_combo.php?page='+this[this.selectedIndex].value+'&amp;ipp=2';return false" class="paginate"> 

防止硬编码的JavaScript事件

有什么办法来防止这个元素的onchange事件?

+0

如何简单地改变它?目前还不清楚你想实现什么。 – 2011-02-07 09:47:46

+1

取出onchange位 – Ashley 2011-02-07 09:48:06

+0

从元素中删除onchange属性? – 2011-02-07 09:50:41

回答

2

你只是想永久或暂时删除的处理程序?

//grabs first select on page 
var mySelect = document.getElementsByTagName('select')[0]; 

// permanently 
mySelect.onchange = function(){};//noop 

//temporarily 
var toggle = true; 
var orig = mySelect.onchange; 
mySelect.onchange = function(){ 
    if(toggle) toggle = false; 
    else orig.call(mySelect); 
}; 

永久版本只是吹出了现有的处理程序。

临时版本保存原始的onchange处理程序,并根据应用程序中的其他状态(在本例中为“toggle”变量)调用它。

1

无法防止事件射击在一个场合,但可以通过指定null到元素的onchange财产取消它:

document.getElementById("mySelect").onchange = null; 
-1

如果通过阻止你的意思是删除事件监听器,那么是的。 只需使用removeEventListener()方法。 (“mySelect”)。removeEventListener('onchange',function(),false);}}。

任何E的答案都应该可以正常工作,它的处理方式是traditional