2014-04-14 20 views
5

Küçük bir sorunum var. <select> A arasından seçim yapma seçeneğine ihtiyacım var, bu eylemi tetikledi ve <select> B içindeki <option> ilk <option> B'yi, numaralı telefondan seçin. Her şey iyi çalışıyor, ancak SADECE son optgroup ve onun seçeneğini seçemiyorum.jQuery - Son optgroup'ta ilk seçeneği seçemiyorum

Bu hata yalnızca Firefox (Linux, Win7) gibi görünüyor jsfiddle

bakmak için deneyin. Google Chrome iyi. Herhangi bir fikrin var mı?

Kodu (html):

<select id="charset" name="charset"> 
    <option value=""></option> 
    <option value="armscii8">ARMSCII-8 Armenian</option> 
    <option value="ascii">US ASCII</option> 
    <option selected="selected" value="utf8">UTF-8 Unicode</option> 
</select> 

<select id="collation" name="collation"> 
    <optgroup label="armscii8"> 
     <option value="armscii8_bin">armscii8_bin</option> 
     <option value="armscii8_general_ci">armscii8_general_ci</option> 
    </optgroup> 
    <optgroup label="ascii"> 
     <option value="ascii_bin">ascii_bin</option> 
     <option value="ascii_general_ci">ascii_general_ci</option> 
    </optgroup> 
    <optgroup label="utf8"> 
     <option value="utf8_bin" selected="selected">utf8_bin</option> 
     <option value="utf8_czech_ci">utf8_czech_ci</option> 
     <option value="utf8_danish_ci">utf8_danish_ci</option> 
     <option value="utf8_esperanto_ci">utf8_esperanto_ci</option> 
    </optgroup> 
</select>` 

Kodu js: Ben göstermek/gizlemek fonksiyonları kaldırıldı nerede jsfiddle updated

(function($){ 

function setCollation(charset) { 
    $('#collation optgroup option').removeAttr('selected'); 
    $('#collation optgroup').hide(0); 

    if (charset && charset != '') { 
     $("#collation optgroup[label='" + charset + "']").show(0); 
     $("#collation optgroup[label='" + charset + "'] option:first").attr('selected', 'selected'); 
    } 
} 

$('#charset').change(function() { 
    setCollation($(this).val()); 
}); 
setCollation($('#charset').val()); 

})(jQuery); 

GÜNCELLEME. Senaryonun nasıl çalıştığını yeniden oluşturmaya çalışacağız

: Ben ilk seçme kutusu (. Fe değeri DOS Russin) den Harmanlama seçtiğinizde ihtiyacım olarak

  1. , ikinci seçilir seçin.

  2. İlk seçim değerini başka birine değiştirdim. Bu andaki her şey yolunda.

  3. ! DOS Rusça'ya geri döndüm ve bu andaki ikinci seçim kutusu ilk adımdaki gibi seçilmedi.

Bu çok garip bir davranış ve FF'de iş yapamıyorum.

+4

sorunuza ne olacağını düşünün. Bu doğru, herkes için işe yaramıyor. Başarısız olsaydım lütfen [jsfiddle ve no code] ile linkleri önleyin (http://meta.stackexchange.com/questions/149890/prevent-posts-with-links-to-jsfiddle-and-no-code) okuyun seni ikna et. –

+0

"$ ('# collation optgroup') satırını kaldırırsam gizlerim (0); ve ben fiddlejileri yeniden başlatırım, Chrome ve Firefox'ta da aynı davranışı vardır: tüm" optgroup "kalsın ve sadece ilk öğe iyi 'optgroup' seçildi. – PierreF

cevap

4

Eh, tarayıcı davranışının neden tutarsız olduğunu açıklayamıyorum, ancak sorunun .prop olarak değiştirilmesinin problemi çözdüğünü söyleyebilirim.

$('#collation optgroup').prop('disabled', true); 
    $('#collation option').removeAttr('selected'); 

    if (charset && charset != '') { 
     $("#collation optgroup[label='" + charset + "']").prop('disabled',false); 
     $("#collation optgroup[label='" + charset + "'] > option:eq(0)").prop('selected', true); 

görün Yürüt: jsfiddle.net çevrimdışı gittiğinde/eğer

http://jsfiddle.net/8pAAp/1/