表单元素在Firefox中实时更新,但在IE中却没有

时间:2011-07-18 08:33:18

标签: javascript forms internet-explorer firefox

这是我的代码:

function transferq() {
if (document.forms[0].elements['return'].checked == true) {
document.forms[0].elements['returnhour'].disabled = false
document.forms[0].elements['returnminute'].disabled = false
document.forms[0].elements['returnday'].disabled = false
document.forms[0].elements['returnmonth'].disabled = false
document.forms[0].elements['returnyear'].disabled = false
document.forms[0].elements['returnflight'].disabled = false
document.forms[0].elements['samereturn'].disabled = false
}
}

<input name="return" id="return" type="checkbox" value="return" onchange="transferq()" />

它检查是否选中了'return'复选框,如果是,则它会在我的表单中启用一些其他输入(它们最初被禁用)。

这在Firefox中完美运行并立即完成,但在IE中您必须单击文档中的空白区域才能进行更新。

我到处搜索,以找出发生这种情况的原因,但我找不到任何东西。

如果有人能帮助我,我会非常感激。

由于

3 个答案:

答案 0 :(得分:0)

onchange更改为onclick。这应该在单击元素时触发事件,而不是在“更改”时触发事件。由于您已经在检查是否在事件处理函数中检查了它,因此它应该以相同的方式工作。

另请注意,您可以使用this传递相应的复选框,而不是获取相关的复选框:

<input name="return" id="return" type="checkbox" value="return" onclick="transferq(this)" />

然后在函数中使用对该元素的引用:

function transferq(elem) {
    if (elem.checked == true) {
        ...
    }
}

最后请注意,虽然没有必要使用它们,但最好在每行的末尾使用一个分号(应该有一个if语句中的每一行)。

答案 1 :(得分:0)

您是否尝试将该功能附加到其他事件?喜欢使用onclick?

 <input name="return" id="return" type="checkbox" value="return" onclick="transferq()" />

答案 2 :(得分:0)

将您的字段名称从“返回”更改为其他名称。 'return'是javascript中的关键字,我的关键字是html格式的名称。