Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 禁用Select后,OnChange函数不起作用_Javascript_Html_Select_Onchange - Fatal编程技术网

Javascript 禁用Select后,OnChange函数不起作用

Javascript 禁用Select后,OnChange函数不起作用,javascript,html,select,onchange,Javascript,Html,Select,Onchange,我有一个例子,有两个选择。在第一个中更改某些内容后,第二个(已禁用)应更改为已启用。到那里我没有问题。问题是,当您在第二个中更改某些内容时,应打开一个网页。当我没有将.disabled分配给“var urlmenu2”时,它可以正常工作,但当它被分配时就不起作用了。有人知道会发生什么吗 以下是HTML代码: <select id="menu1" > <option value="0" selected="selected" id="selected"> Select a

我有一个例子,有两个选择。在第一个中更改某些内容后,第二个(已禁用)应更改为已启用。到那里我没有问题。问题是,当您在第二个中更改某些内容时,应打开一个网页。当我没有将.disabled分配给“var urlmenu2”时,它可以正常工作,但当它被分配时就不起作用了。有人知道会发生什么吗

以下是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>

选择一个选项
选择1
选择2
选择3
选择4
选择5
选择6
选择7
选择8
选择9
选择10
选择11
选择12
选择13
选择14
选择15
选择一个选项
家
居中
下面是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
var urlmenu1=document.getElementById('menu1');
**var urlmenu2=document.getElementById('menu2')。disabled=true**
urlmenu1.onchange=函数更改1(){
如果(urlmenu1.selectedIndex!=0){
**var urlmenu2=document.getElementById('menu2')。disabled=false**
var selected=document.getElementById('selected')。disabled=true;
}

如果(urlmenu1.selectedIndex>=1&&urlmenu1.selectedIndex=6&&urlmenu1.selectedIndex如果禁用某个字段,该功能也会禁用。请尝试手动触发更改事件

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

我通过如下配置html代码来解决问题: 选择id=“menu2”disabled=“true”我写的是true,而不是许多网站上评论的disabled

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

谢谢。代码如下:

 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;

    } 

};
var urlmenu1=document.getElementById('menu1');
var urlmenu2=document.getElementById('menu2');
var desbloqueo=document.getElementById('bloqueo');
var casita=document.getElementById('casa');
urlmenu1.onchange=函数更改1(){
如果(urlmenu1.selectedIndex!==0){
var urlmenu2=document.getElementById('menu2')。disabled=false;
var seleccionado=document.getElementById('selected')。disabled=true;
desbloqueo.style.display='none';
}

如果(urlmenu1.selectedIndex>=1&&urlmenu1.selectedIndex=6&&urlmenu1.selectedIndex嘿,Marcos,谢谢你这么快的回答,我试过了,但还是被禁用了。还有什么想法吗?如果你让触发器
change()
必须工作,但禁用的属性不会删除。请告诉我们你是怎么做的,我刚刚添加了“urlmenu2.change”();“在您建议的第二个函数之前,可能您是指触发器的其他功能?我不习惯:/触发器用于手动触发事件。如果您创建
元素.trigger(“更改”)
(jquery)或
元素.change()
(javascript)即使元素被禁用,事件也会触发。因此,当需要触发事件时,您会将其放入。在阅读了大量关于它的内容和您的解释后,我认为我理解了它是如何工作的,我尝试在下面的示例中使用它,但我不知道我是否正确地使用了它,因为它根本不工作:SMmmm,我告诉您触发更改事件,但您是侦听更改事件。与
change()
不同
urlmenu1.onchange(function(){casita.disabled=false;});
它侦听更改事件;
urlmenu1.change()
:它触发了change eventHum,这样一个错误T.T.尽管尝试使用.change也不会产生任何结果。现在我不知道该怎么办。我尝试了:casita.change(casita.disable=false);而不是urlmenu1.onchange(…),虽然尝试了urlmenu2.change(casita.disable=false);但它没有改变(disable或enable).change()里面没有任何内容。只调用它element.change()来告诉浏览器元素发生了变化。您需要以友好的方式更改元素值来尝试另一个解决方案OK,所以里面没有内容,但是我们如何告诉机器必须应用哪种变化?(启用或禁用)将是这样的?casita.disabled=false;casita.change();是的。当您进行
casita.change();
时,您告诉浏览器
casita
元素已更改其值。禁用的属性不会触发更改事件。当您进行
casita.onchange()时
如果浏览器触发更改事件,您正在侦听,但您没有手动触发。我希望您能够解决它,但我不知道您处于什么状态。