IE上的Javascript onchange,onmouseup,onkeypress等。请帮忙

时间:2015-02-18 10:00:55

标签: javascript internet-explorer

我希望有人可以帮助我拥有一个带有10个数字输入字段的HTML表单,其中包含class =" takings"。我想理想地将JS函数附加到每个的onchange事件上,但是如果必须的话,我会选择onmouseup或类似的。 从外部js文件调用以下内容:

  function init(){
   var input = document.getElementsByClassName("takings"); 
    for (var i = 0; i < input.length; i++) { 
   input[i].onchange = function()
   {
    alert('testing');
   }
   input[i].value = 0.00; 

}
}
window.onload=init;

我在firefox和chrome上测试了这段代码,它运行正常。然而它不适用于IE(到目前为止我已经测试过IE8和IE11)。我需要在IE中运行此应用程序,因为它是我们在公司网络上使用的唯一浏览器。由于其他依赖性的变化,它甚至不是一个选项。 它确实发生在我身上,我们可能有一些组策略阻止某些浏览器功能,但同样的行为发生在我们的域之外。 任何人都可以告诉我我在哪里出错或者在IE上实现同等功能吗?

非常感谢

***** UPDATE **********

function init(){
   var input = document.querySelectorAll(".takings"); 
    for (var i = 0; i < input.length; i++) { 
   input[i].attachEvent("onchange", function () {alert('testing');}); 
   input[i].value = 0.00;
} 

}

此代码仅适用于ie8而非ff或ie11

3 个答案:

答案 0 :(得分:0)

使用ie,您必须使用attachEvent。当元素松散焦点时触发onchange。你可以尝试onkeypress来解决它。

答案 1 :(得分:0)

尝试

 document.querySelectorAll(".takings"); 

而不是

document.getElementsByClassName("takings"); 

querySelectorAll()方法支持单词上的IE9

更多参考thisthis

<强>更新

我们可以在IE6,7,8中使用getElementsByClassName()已经在stackoverflow中讨论过这个主题,所以如果你想做类似的事情,那么请参考this

答案 2 :(得分:0)

    function getsum(){
    var total = 0;
    var fields = $('.takings');

    for (i = 0; i < fields.length; i++) {
    total += parseFloat(fields[i].value);
    }

    var label = document.getElementById("TotalLabel");
    label.innerHTML = total;
 }


function init(){

 $('.takings').change(function(){getsum()});

}

window.onload=init;

在所有浏览器上工作,感谢大家的帮助!