2017-08-30 63 views
0

我试图让一个javascript运行时,当一个下拉列表被更改为特定的值时,它在Chrome中一切正常,但IE只是拒绝启动“onChange”函数。JavaScript onChange在IE中没有触发

这里是我的下拉列表代码:

<select name="typeTenancy" onchange='TenancyCheck(this.value);' required> 
    <option value=""></option>             
    <option value="1">1 - Option 1</option> 
    <option value="2">2 - Option 2</option> 
    <option value="3">3 - Option 3</option> 
    <option value="4">4 - Option 4</option> 
    <option value="5">5 - Option 5</option>               
</select> 

这里的Javascript我想,当选项4把它捡起来运行:

function TenancyCheck(val){ 
    var element=document.getElementById('tenancyDuration'); 
    if(val=='4') 
    blockReqTenancy(); 
    else 
    displayTenancy(); 
} 

function blockReqTenancy() { 
    document.getElementById("tenancyDuration").style="display:block"; 
    document.getElementById("tenancyDuration").required=true; 
} 

function displayTenancy() { 
    document.getElementById("tenancyDuration").style="display:none"; 
    document.getElementById("tenancyDuration").required=false; 
} 

它本质上揭示了一个输入框时,选择4被选中,但在使用Internet Explorer 11时没有显示任何内容。

我也检查过,并且已将脚本src放入我的HTML代码的正文中。

如果有人能解释为什么会发生这种情况,并指出我在正确的方向来解决这个问题,将不胜感激。

+1

问题通常自己解决,一旦你停止使用内联事件处理程序,而使用标准功能,如['addEventListener'](https://developer.mozilla.org/EN-US /文档/网络/ API /事件目标/的addEventListener)。无论如何,请使用[浏览器控制台(开发工具)](https://webmasters.stackexchange.com/q/8525)(点击'F12')并读取任何错误。 – Xufox

+0

@Xufox如何修改我的代码以使用下拉列表来合并addEventListener? –

回答

1

当你说getElementById,你没有名为“tenancyDuration”的id。你可以添加它。

对于IE稍微改变你的功能。 like style.display =“block”;和使用功能的setAttribute这样的

全码

<select name="typeTenancy" id ="tenancyDuration" onchange='TenancyCheck(this.value);' required> 
<option value=""></option>             
<option value="1">1 - Option 1</option> 
<option value="2">2 - Option 2</option> 
<option value="3">3 - Option 3</option> 
<option value="4">4 - Option 4</option> 
<option value="5">5 - Option 5</option>               
</select> 

<script> 
function TenancyCheck(val){ 
    var element=document.getElementById('tenancyDuration'); 
    if(val=='4') 
    blockReqTenancy(); 
    else 
    displayTenancy(); 
} 

function blockReqTenancy() { 
document.getElementById("tenancyDuration").style.display="block"; 
document.getElementById("tenancyDuration").setAttribute("required", true); 
} 

function displayTenancy() { 
document.getElementById("tenancyDuration").style.display="none"; 
document.getElementById("tenancyDuration").setAttribute("required", false); 
} 
</script> 
+0

感谢您的回答,“租期”ID是指我的html中的另一个部分,我没有在我的问题中包括,为此造成的困惑表示歉意。 但你解决了我的问题!我改变了语法: .style =“display:block”; TO .style.display =“block”; 也为其余的setAttribute等,它固定在IE上!魔法。 –

+0

我很高兴它帮助你。请享用 ! :) – MMRahman