我希望有人可以帮助我拥有一个带有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
答案 0 :(得分:0)
使用ie,您必须使用attachEvent。当元素松散焦点时触发onchange。你可以尝试onkeypress来解决它。
答案 1 :(得分:0)
尝试
document.querySelectorAll(".takings");
而不是
document.getElementsByClassName("takings");
querySelectorAll()方法支持单词上的IE9
<强>更新强>
我们可以在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;
在所有浏览器上工作,感谢大家的帮助!