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

Form Elements update in real-time in Firefox but in IE they don't

本文关键字:IE 但在 Firefox 表单 元素 实时更新      更新时间:2023-09-26

下面是我的代码:

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中,您必须单击文档中的空白区域才能更新。

我几乎到处都找遍了,想知道为什么会这样,但我什么也找不到。

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

谢谢

您是否尝试将该函数附加到其他事件?比如使用onclick?

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

onchange改为onclick。这应该在元素被点击的时候触发事件,而不是在它"改变"的时候。因为你已经在你的事件处理函数中检查了它是否被检查了,这应该以同样的方式工作。

还请注意,不是在函数中获得有问题的复选框,您可以使用this:

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

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

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

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

将您的字段名称从'return'更改为其他名称。'return'是javascript中的一个关键字,我在html形式中将关键字作为名称时遇到了问题。