2012-07-16 40 views
1

我們正試圖讓一個下拉框變成另一個。我們有這個代碼可以在Firefox,safari和chrome上正常工作。但在IE 8+中,第一個下拉菜單對第二個下拉菜單沒有影響。我們必須改變以使其在IE中工作?謝謝,爲什麼JQuery不改變IE中的選擇選項?

我們有這個jQuery:

//set up the global variable maxChecks which stops donor ticking too many boxes 
    var maxChecks 
    var checkCount=0 
    var boxeschecked = 0 
    //now change the drop down 
    jQuery.noConflict(); 
    jQuery(document).ready(function($) { 
     $(function() {  
      $("#json-one").change(function() { 
       if ($(this).val() >= "1") { 
        $("#hide1").slideDown("fast"); //Slide Down Effect 
       } 
       var $dropdown = $(this); 
       var key = $dropdown.val(); 
       var vals = []; 
       switch(key) { 
      case '1': document.getElementById("t3").innerHTML ="<option value=2>&pound;2.50 per month</option>, <option value=3>&pound;30 per year</option>, <option value=1>A single donation of &pound;30</option>"; maxChecks=1; boxeschecked=0; checkCount=0; document.getElementById("nsdiv").innerHTML =""; for (var i = 0; i < 1 ; i++) {document.getElementById("nsdiv").innerHTML +='<input type="hidden" name="childid[]" value="newchild" checked>';} break; 
      case '2': document.getElementById("t3").innerHTML ="<option value=5>&pound;5 per month</option>, <option value=4>&pound;60 per year</option>, <option value=22>A single donation of &pound;60</option>"; maxChecks=2; boxeschecked=0; checkCount=0; document.getElementById("nsdiv").innerHTML =""; for (var i = 0; i < 2 ; i++) {document.getElementById("nsdiv").innerHTML +='<input type="hidden" name="childid[]" value="newchild" checked>';} break; 

case 'base': vals = ['-']; 
       } 
       $jsontwo.empty(); 
      }); 
     }); 
    }); 

,這是HTML:

<select id="json-one" name="json-one"> 
     <option selected value="base">Please select</option> 
     <option value="1">1 child</option> 
     <option value="2">2 children</option> 
    </select> 
    <!-- this select box will be hidden at first --> 
    <div style="display:none;" id="hide1"> 
     By donating <select id="t3" name="t3"><option>-</option></select> 
    </div> 
+0

什麼是' $ jsontwo'?聲明你的前三個變量後,你也錯過了結尾的分號。 – j08691 2012-07-16 20:57:05

+0

它應該被選中,而不僅僅是選中。 – 2012-07-16 21:01:51

+0

謝謝你!非常有用 – oliver 2012-07-16 21:25:45

回答

1

下出現在IE瀏覽器進行工作:

//set up the global variable maxChecks which stops donor ticking too many boxes 
    var maxChecks; 
    var checkCount=0; 
    var boxeschecked = 0; 
    //now change the drop down 
    jQuery.noConflict(); 
    jQuery(document).ready(function($) { 
     $(function() {  
      $("#json-one").change(function() { 
       if ($(this).val() >= "1") { 
        $("#hide1").slideDown("fast"); //Slide Down Effect 
       } 
       var key = $(this).val(); 
       var vals = []; 
      switch(key) { 
       case "1": 
       $("#t3").html('<option value=2>&pound;2.50 per month</option> <option value=3>&pound;30 per year</option> <option value=1>A single donation of &pound;30</option>'); 
       maxChecks=1; 
       boxeschecked=0; 
       checkCount=0; 
       $("#nsdiv").html(''); 
       for (var i = 0; i < 1 ; i++) { 
        $("#nsdiv").append('<input type="hidden" name="childid[]" value="newchild" checked>'); 
       } 
       break; 
       case "2": 
       $("#t3").html('<option value=5>&pound;5 per month</option> <option value=4>&pound;60 per year</option> <option value=22>A single donation of &pound;60</option>'); 
       maxChecks=2; 
       boxeschecked=0; 
       checkCount=0; 
       $("#nsdiv").html(''); 
       for (var i = 0; i < 2 ; i++) { 
        $("#nsdiv").append('<input type="hidden" name="childid[]" value="newchild" checked>'); 
       } 
       break; 

       case 'base': 
       vals = ['-']; 
       break; 
      } 
      }); 
     }); 
    }); 
​ 

在這裏看到一個例子:http://jsfiddle.net/m6A8z/

+0

非常感謝約翰 - 我看不到你做了什麼,但它的工作原理! – oliver 2012-07-16 21:14:09

+2

@oliver - 那麼爲什麼你在接受答案之前不要求解釋? – j08691 2012-07-16 21:15:24

+0

我已經將jQuery的append/html方法用於innerHTML。對於使用表單元素的innerHTML,IE有時可能會出現奇怪的行爲。 jQuery的方法通常被編程爲抵消由於各種瀏覽器之間的差異而可能發生的問題。 – johnmadrak 2012-07-16 21:19:12