2013-02-25 19 views
5

Belki de sadece aptalca olduğum ilginç bir sorunla karşılaştım. JQuery seçili çoklu açılır seçenekleri belirliyor

Ben bu biraz benziyor seçkin kutusu var:

<select id="dom_" name="dom_"> 
    <option value="1">1</option> 
    <option value="2">2</option> 
    <option value="3">3</option> 
    <option value="4">4</option> 
    ... 

seçenek ayın günlerini temsil eden ve şimdi 31.

kadar gitmek, ben varsayılan bir değer seçmek için çalışıyordu bilgi içeren bir form (düzenleme için) yüklendiğinde, ancak tam olarak doğru çalışamadım.

Ben önceki bazı SO sorular bulunan bu pasajı kullanarak çalıştı:

$("#dom_ option[value$='" + 2 + "']").attr('selected', true); 

Bu hat çalışır ve seçilen 2. şıkkı belirler, ama aynı zamanda hem seçilen diğer 2X veya X2 seçenekleri ayarlar. Örneğin, 12 ve 22 de seçilecek şekilde ayarlanacaktır.

$("#dom_ option").each(function() 
{ 
    if ($(this).val() == 2) 
    { 
     $(this).attr('selected', true); 
    } 
    else 
    { 
     $(this).attr('selected', false); 
    } 

}); 

Sonra sağ seçeneği seçili alacak, ancak SELECT kutu güncellenecektir olmaz:

ancak, ben bunu kullanın.

Kutuyu güncellemek için $("#dom_").val(2); sonradan elle arama yapmak zorundayım.

Yani, sorum şu, neden ilk seçenek çalışmıyor ve ikinci neden otomatik olarak yenilenmiyor? Tam $("#dom_") yoluyla SELECT nesneyi alarak ve bir seçenek alıp true selected ayarı karşı Üzerinde .val arayarak arasındaki farkın ne de

? Bunların ikisi de aynı POST veya GET verilerini geri gönderir mi?

İşte bunu umduğunuzu gösteren bir jsFiddle.

Yardımcı olur mu, JQuery 1.6.4 kullanıyorum ama jsFiddle bazı yeni sürümlerinde aynı sorunu yeniden üretebilir.

Bu soru çok basitse özür dilerim. JavaScript ve JQuery söz konusu olduğunda hala oldukça amatörüm.

+0

selected seçenek

$("#dom option").each(function() { if ($(this).val() == 2) { $(this).attr('selected', true); } }); 

Kontrol sıfırlayacak şekilde İkinci örnekte

$("#dom_ option[value='" + 2 + "']").attr('selected', true); 

2), else durum bir nedeni' gereksiz var mı olduğunu Bunu sadece html özniteliği yerine jQuery ile yapıyor musunuz? – Colleen

+0

'$ (" # dom_ option [value = '2'] ") prop ('selected', true);' 2 değişkene ihtiyacınız yoksa 2 ... –

cevap

6

($=) ile sonları kullanıyorsunuz, yalnızca istediğiniz tam olarak eşleşecek olan value= kullanın.

$("#dom_ option[value='" + 2 + "']").attr('selected', true); 
+0

Hata! '$ =' yaptı. Çok teşekkürler! – zermy

1

O (statik içerik ve sen sadece basit bir varsayılan gerekirse yani) Eğer javascript bunu yapmak gerekmez basit yeterince tasarıma benziyor. "Selected" özelliğini html seçenek etiketinize uygulayabileceğinizi biliyor musunuz?

<select id="dom_" name="dom_"> 
    <option value="1">1</option> 
    <option value="2" selected="selected">2</option> 
    <option value="3">3</option> 
    <option value="4">4</option> 
    ... 
+1

Hayır, kod, tıklanan öğeye bağlı olarak dinamik olarak seçilir (arka uçtan AJAX yoluyla bilgi alır), ancak evet statik ise, bunu yapmış olurdum. – zermy

1

Hem belirli bir dizeye sahip tam biten bir değerle belirtilen özniteliği elemanları seçer olacak,

1) jQuery Ends With Selector ([name$="value"]) gereğince şimdi çalışmalıdır.Bu Jsfiddlehttp://jsfiddle.net/NUTWR/

+0

Evet, oradaki '$ =' yi atmamalıydım. İkinci seçeneğe gelince, sanırım “başka”, her seferinde “SELECT” kutusunun her seferinde yenilemesine neden olan “seçili” nin sıfırlanması nedeniyle onu atıyordu. Teşekkürler. :) – zermy

+0

@zermy Hoş Geldiniz! – ssilas777

İlgili konular