html seçme öğesinin seçilen seçenek değerini almak ve ayarlamak için jQuery


126

JQuery ile bir seçme öğesinin (açılır liste) seçilen değerini almaya ve ayarlamaya çalışıyorum.

geri alma için denedim $("#myId").find(':selected').val(), hem de $("#myId").val()her ikisi de tanımsız döndü.

Bu sorunla ilgili herhangi bir içgörü çok takdir edilecektir.


asp .net kullanıyorsanız, kimliği oluşturulduktan sonra aynı olmayabilir!
Rigobert Song

Yanıtlar:


154

Şu anda sahip olma şeklin doğru. Ya seçimin kimliği söylediğiniz gibi değil ya da etki alanında bazı sorunlar yaşıyorsunuz.

Elemanın kimliği kontrol edin ve ayrıca İşaretlemenizin doğrular kontrol buraya W3C de.

Geçerli bir dom olmadan jQuery, seçicilerle doğru şekilde çalışamaz.

Kimlikler doğruysa ve alanınız doğrulanırsa aşağıdakiler geçerlidir:

Seçenek Değerini Okumak İçin

$('#selectId').val();

Seçim Değerini Ayarlamak İçin

$('#selectId').val('newValue');

Seçilen Metni Okumak İçin

$('#selectId>option:selected').text();

@ Html.DropDownList ("CoinTypes", (SelectList) ViewBag.RequiredLevel, new {@class = "form-control", @ style = "height: 21px; margin-top: 5px;"}) ancak $ ('# CoinTypes ') .val (@ ViewBag.CoinType); seçilmesi değil
Nithin Paul'e

@NithinPaul gerçekten bir yorum değil, html'yi gösteren bir soru sorun, böylece birisi gerçekten neyin yanlış olduğunu bulmaya çalışabilir. Herhangi birinin bazı web formlarından / mvc kodundan bunu nasıl çözmesini bekleyebileceğinizden emin değilsiniz!
redsquare

248

select öğesinin gerçek selectedIndex özelliğini almak / ayarlamak için şunu kullanın:

$("#select-id").prop("selectedIndex");

$("#select-id").prop("selectedIndex",1);

19
Prop () özelliğinin sürüm 1.6'da uygulandığına dikkat etmek önemlidir, bu nedenle önceki sürümler bu işlevselliğe sahip değildir.
RobB

18
Bu cevabı beğendim çünkü aslında sadece değere değil, dizine erişim sorusuna cevap veriyor.
Pablo Diaz

4
evet. Bunun orijinal soru olduğunu sanıyordum.
Jack Holt

Muhtemelen aynı sözdizimiyle attr de kullanabilir ve sorun yaşamazsınız.
Yitzhak

7
@ M.YitzhakSamuel .attr()ve .prop()eşanlamlı değildir. Bir özniteliğin aynı zamanda bir özellik olduğu, örneğin .attr('id')şuna eşit olduğu belirli durumlarda çalışacaktır .prop('id'). Bu durumda .prop('selectedIndex')eşittir .get(0).selectedIndex.
WynandB

7

$('#myId').val() yapmalıyım, başarısız olduğum için deneyecektim:

$('#myId option:selected').val()

4

İle ayarlarken şunları JQMgüncellemeyi unutmayın UI:

$('#selectId').val('newValue').selectmenu('refresh', true);

Bu külçe için teşekkürler - selectedIndex'i $ ("# slot-choice"). Prop ("selectedIndex", n) ile değiştirdikten sonra yeni değerin neden ekranda görünmediğini merak ediyordum.
Samik R

3

$("#myId").val() eğer çalışmalı myidseçili öğe kimliği ise !

Bu, seçilen öğeyi ayarlar: $("#myId").val('VALUE');


1

Aşağıdaki gibi SELECT etiketini kullanarak bir Açılır liste oluşturduğunuzu varsayalım,

<select id="Country">

Şimdi, JQuery kullanarak açılır menüden seçilen değerin ne olduğunu görmek istiyorsanız, o değeri almak için aşağıdaki satırı koymanız yeterlidir.

var result= $("#Country option:selected").text();

iyi çalışacak.


0

Bunun eski olduğunu biliyorum ama Razor ile biraz zaman geçirdim, ne kadar uğraşsam da çalıştıramadım. Özellik için "metin" veya "html" kullansam da "tanımsız" olarak geri dönmeye devam etti. Son olarak seçeneğe "veri-değer" özelliğini ekledim ve bunu gayet iyi okudu.

 <option value="1" data-value="MyText">MyText</option>

 var DisplayText = $(this).find("option:selected").attr("data-value");

0

$ ("#myId seçeneği: seçildi") .text (); açılır öğede seçtiğiniz metni size verecektir. her iki şekilde de değiştirebilirsiniz .val (); değerini elde etmek için. aşağıdaki kodlamayı kontrol edin

<select id="myId">
    <option value="1">Mr</option>
    <option value="2">Mrs</option>
    <option value="3">Ms</option>`
    <option value="4">Dr</option>
    <option value="5">Prof</option>
</select>

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.