防止硬编码的javascript事件

时间:2011-02-07 09:43:36

标签: javascript events

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

有没有办法阻止此元素的onchange事件?

3 个答案:

答案 0 :(得分: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 :(得分:1)

您不能阻止事件在一次性事件中触发,但您可以通过将null分配给元素的onchange属性来取消设置:

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

答案 2 :(得分:-1)

如果通过阻止你的意思是删除事件监听器,那么是。 只需使用removeEventListener()方法。

document.getElementById(“mySelect”)。removeEventListener('onchange',function(),false);

Any E的答案也应该有效,这是traditional处理它的方式。