禁用选择后,OnChange功能将不起作用

The OnChange function do not work after having disabled the Select

本文关键字:功能 不起作用 OnChange 选择      更新时间:2023-09-26

我有一个包含2个选择的示例。一旦您更改了第一个中的某些内容,第二个(已禁用(应更改为已启用。到那里我没有问题。问题是,当你在第二个中更改某个内容时,网页应该打开。当我没有为"varurlmenu2"分配.disabled时,这很好,但当它被分配时就不起作用了。有人知道会发生什么吗?

这是HTML代码:

<select id="menu1" >
<option value="0" selected="selected" id="selected"> Select an option </option>
  <optgroup label="Category1:">
  <option value="1"> Option1 </option>
  <option value="2"> Option2 </option>
  <option value="3"> Option3 </option>
  <option value="4"> Option4 </option>
</optgroup>
<optgroup label="Category2:">
  <option value="5"> Option5 </option>
  <option value="6"> Option6 </option> 
  <option value="7"> Option7 </option>
  <option value="8"> Option8 </option>
  <option value="9"> Option9 </option>
  <option value="10"> Option10 </option>
  <option value="11"> Option11 </option>
  <option value="12"> Option12 </option>
  <option value="13"> Option13 </option>
  <option value="14"> Option14 </option>
<optgroup label="Category3:">
  <option value="15"> Option15 </option>
</optgroup>
</select>
<select id="menu2">
  <option value="0" selected="selected" id="selected2"> Select an option </option>
  <option value="1" id="center">Home</option>
  <option value="2" id="home">In the Center</option>
</select>

这是Javascript代码:

 var urlmenu1 = document.getElementById('menu1');
 **var urlmenu2 = document.getElementById('menu2').disabled=true;**
urlmenu1.onchange = function change1(){
    if(urlmenu1.selectedIndex != 0){    
        **var urlmenu2 = document.getElementById('menu2').disabled=false;**
        var selected = document.getElementById('selected').disabled=true;
    }
    if(urlmenu1.selectedIndex >= 1 && urlmenu1.selectedIndex <= 4) {
         var opcion = document.getElementById('casa').disabled=false;
         var seleccionado2 = document.getElementById('selected2').disabled=true;
    } 
    if(urlmenu1.selectedIndex >= 6 && urlmenu1.selectedIndex <= 15){
         var opcion = document.getElementById('home').disabled=true;
         var selected2 = document.getElementById('selected2').disabled=true;
    } 
};
 urlmenu2.onchange = function cahnge2(){
    if(urlmenu1.selectedIndex == 1 && urlmenu2.selectedIndex==1){
        window.open("http://www.google.com",'_self');
        urlmenu1.selectedIndex = 0;
        urlmenu2.selectedIndex = 0;
    } 
     if(urlmenu1.selectedIndex == 2 && urlmenu2.selectedIndex==1){
        window.open("http://www.yahoo.com",'_self');
        urlmenu1.selectedIndex = 0;
        urlmenu2.selectedIndex = 0;
    } 
 etc... until 15

谢谢!

如果禁用字段,功能也会禁用。尝试手动触发更改事件。

 urlmenu2.change();
 urlmenu2.onchange = function() ....

我通过配置如下html代码来解决问题:selectid="menu2">disabled="true">我写的是true,而不是许多网站上评论的禁用。

现在出现了一个新问题。根据我在第一次选择中所做的更改的值,我想从第二次选择禁用选项"casa"或激活它。令人难以置信的是,正确禁用"var seleccionado"没有问题,但对于其他变量:seleccionado2或casita,它不起作用。你认为问题出在哪里?如果你看到"urlmenu1.onchange(casita.disabled=false(;",我甚至试图在你遇到Marcos时强制触发它,但我没有实现。

谢谢。这里的代码:

 var urlmenu1 = document.getElementById('menu1');
 var urlmenu2 = document.getElementById('menu2');
 var desbloqueo = document.getElementById('bloqueo');
 var casita = document.getElementById('casa');
urlmenu1.onchange = function change1(){
    if(urlmenu1.selectedIndex !==0){    
        var urlmenu2 = document.getElementById('menu2').disabled=false;
        var seleccionado = document.getElementById('selected').disabled=true;
        desbloqueo.style.display ='none';
    }
    if(urlmenu1.selectedIndex >= 1 && urlmenu1.selectedIndex <= 4) {
         var seleccionado2 = document.getElementById('selected2').disabled=true;
          urlmenu1.onchange(casita.disabled=false);
    } 
    if(urlmenu1.selectedIndex >= 6 && urlmenu1.selectedIndex <= 15){
         urlmenu1.onchange(casita.disabled=true);
         var seleccionado2 = document.getElementById('selected2').disabled=true;
    } 
};