Seçeneğin jQuery ile seçilip seçilmediğini kontrol edin, varsayılan değilse seçin


207

JQuery kullanarak, bir seçim menüsünde seçili bir seçenek olup olmadığını nasıl kontrol edersiniz ve seçmediyseniz seçeneklerden birini seçili olarak nasıl atarsınız?

(Seçim miras kaldığım bir uygulamada PHP fonksiyonlarının bir labirent ile üretilir, bu yüzden bu kafamı etrafında alırken bu hızlı bir düzeltme :)


Yanıtlar:


270

Tam olarak ne yapmak istediğinizden emin olmasam da, bu kod parçası benim için çalıştı.

<select id="mySelect" multiple="multiple">
  <option value="1">First</option>
  <option value="2">Second</option>
  <option value="3">Third</option>
  <option value="4">Fourth</option>
</select>

<script type="text/javascript"> 
$(document).ready(function() {
  if (!$("#mySelect option:selected").length) {
    $("#mySelect option[value='3']").attr('selected', 'selected');
  }
});
</script>

86
Seçimi şöyle okumak daha kolay olurdu:$("#mySelect").val(3);
Jørn Schou-Rode

6
Bu beni doğru yola soktu, ama bunu yapmam gerekiyordu: $("#mySelect option")[2]['selected'] = true; Firebug'daki nesne yapılarını araştırdıktan sonra bunu anladım .
semperos

28
JQuery 1.6'dan itibaren özelliği doğrudan ayarlayabilirsiniz. $("#mySelect").prop("selectedIndex", 2)
gradbot

1
.Val (x) sürümü Internet Explorer 8'de çalışmaz, bu nedenle tüm tarayıcılarda çalıştığından @gradbot doğru olana sahiptir.
Sorcy

30

Bunun için jQuery kullanmaya gerek yok:

var foo = document.getElementById('yourSelect');
if (foo)
{
   if (foo.selectedIndex != null)
   {
       foo.selectedIndex = 0;
   } 
}

58
OP, "jQuery Kullanılıyor ..." ifadesini kullandı, bu yüzden bunu görmezden gelmek gereksiz görünüyor, değil mi?
BryanH

13
Şahsen, belirli bir soru sorarsam, sorunun farklı bir yol yerine cevabını almak istiyorum.
vitto

18
Bazen aradığınız cevap beklediğiniz cevap değildir.
MrBoJangles

5
Ne olursa olsun, jQuery istedi ve jQuery cevabını anlamak biraz daha kolaydır, özellikle de temel JavaScript'i anlamadıysa.
shmeeps

6
Bunu yapmanın mükemmel yolu, bazen temel javascript oldukça kullanışlı olabilir!
Hallaghan

13

Bu soru eski ve çok fazla görüşe sahip, bu yüzden eminim bazı insanlara yardımcı olacak bazı şeyler atarım.

Bir seçme öğesinde seçilen öğelerin olup olmadığını kontrol etmek için:

if ($('#mySelect option:selected').length > 0) { alert('has a selected item'); }

veya bir seçimin seçili olup olmadığını kontrol etmek için:

if ($('#mySelect option:selected').length == 0) { alert('nothing selected'); }

veya bir çeşit döngü içerisindeyseniz ve geçerli öğenin seçili olup olmadığını kontrol etmek istiyorsanız:

$('#mySelect option').each(function() {
    if ($(this).is(':selected')) { .. }
});

döngü sırasında bir öğenin seçili olup olmadığını kontrol etmek için:

$('#mySelect option').each(function() {
    if ($(this).not(':selected')) { .. }
});

Bunlar bunu yapmanın bazı yolları. jQuery aynı şeyi başarmanın birçok farklı yoluna sahiptir, bu yüzden genellikle hangisinin en verimli göründüğünü seçersiniz.


"not" benim için çalışmadı $ ('# mySelect option'). her (function () {if ($ (this) .not (': seçili')) {..}}); Yani bir olumsuzlama kullanılırsa (! $ (This) .is (': seçili')) {..} Tarayıcı: Chrome; Jquery versiyonu: 3.1.1
Anil kumar

12

lencioni'nin cevabı tavsiye ederim. ('#mySelect option:last')" #mySelect option[value='yourDefaultValue']" Düğmesini kullanarak belirli bir değere sahip seçeneği seçme seçeneği için seçiciyi değiştirebilirsiniz . Seçiciler hakkında daha fazla bilgi .

İstemcideki belirli listelerle yoğun bir şekilde çalışıyorsanız, bu eklentiye göz atın: http://www.texotela.co.uk/code/jquery/select/ . Belirli listelerle çalışma konusunda daha fazla örnek görmek istiyorsanız kaynağa bakın.


9

İşte benim işlevi seçilen seçeneği değiştirme. JQuery 1.3.2 için çalışır

function selectOption(select_id, option_val) {
    $('#'+select_id+' option:selected').removeAttr('selected');
    $('#'+select_id+' option[value='+option_val+']').attr('selected','selected');   
}

7
<script type="text/javascript"> 
$(document).ready(function() {
  if (!$("#mySelect option:selected").length)
   $("#mySelect").val( 3 );

});
</script>




2

Bu işe yarayan hızlı bir komut dosyasıydı ... .Sonuç bir etikete atandı.

$(".Result").html($("option:selected").text());

1

Siz seçim yapmak için çok fazla şey yapıyorsunuz. Sadece değere göre seçin:

$("#mySelect").val( 3 );

2
Bu, başka bir seçenek önceden seçilmiş olsa da, 3. seçeneği seçer.
Jordan Ryan Moore


1

Seçenek seçiliyse kontrol etmek için iyi bir yol buldum ve olmadığında bir varsayılan seçtim.

    if(!$('#some_select option[selected="selected"]').val()) {
        //here code if it HAS NOT selected value
        //for exaple adding the first value as "placeholder"
        $('#some_select option:first-child').before('<option disabled selected>Wybierz:</option>');
    }

Eğer #some_select has't varsayılan seçili seçenek daha sonra ) (.val olduğunu tanımsız


0
$("option[value*='2']").attr('selected', 'selected');
// 2 for example, add * for every option

0
$("#select_box_id").children()[1].selected

Bu, bir seçeneğin seçili olup olmadığını kontrol etmenin başka bir yoludur. Bu Boole (Doğru veya Yanlış) döndürür.

[1] seçim kutusu seçeneğinin dizinidir


0

Seçim kutusundaki olayı ateşlemek için değiştirin ve bir kez yapıldıktan sonra seçilen seçeneğin id niteliğini çekin: -

$("#type").change(function(){
  var id = $(this).find("option:selected").attr("id");

  switch (id){
    case "trade_buy_max":
      // do something here
      break;
  }
});

0

Sadece benzer bir şey arıyordum ve bunu buldum:

$('.mySelect:not(:has(option[selected])) option[value="2"]').attr('selected', true);

Bu, sınıfta önceden seçili bir seçeneği bulunmayan tüm seçili menüleri bulur ve varsayılan seçeneği seçer (bu durumda "2").

Bunun :selectedyerine kullanmayı denedim [selected], ancak hiçbir şey niteliği olmasa bile her zaman bir şey seçildiği için işe yaramadı


0

"Seçili" özelliğe sahip olup olmadığını görmek için her seçeneği açıkça kontrol etmeniz gerekiyorsa bunu yapabilirsiniz. Aksi takdirde option:selected, ilk varsayılan seçenek için değer alırsınız.

var viewport_selected = false;      
$('#viewport option').each(function() {
    if ($(this).attr("selected") == "selected") {
        viewport_selected = true;
    }
});
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.