Radyo grubundan seçilen radyoyu bir değerle ayarlama


153

Neden bununla mücadele ediyorum?

Bir değerim var: 5

"Grubum" grubunun radyo düğmesini 5 değeriyle nasıl kontrol edebilirim?

$("input[name=mygroup]").val(5); // doesn't work?

Yanıtlar:


351

Öznitelik seçicinin yardımıyla giriş elemanını ilgili değerle seçebilirsiniz. Ardından, özelliği kullanarak açık bir şekilde ayarlamanız gerekir .attr:

var value = 5;
$("input[name=mygroup][value=" + value + "]").attr('checked', 'checked');

JQuery 1.6 olduğundan, .propyöntemi bir boole değeriyle de kullanabilirsiniz (bu tercih edilen yöntem olmalıdır):

$("input[name=mygroup][value=" + value + "]").prop('checked', true);

Öncelikle işaretli özelliği yalnızca bir radyo düğmesi grubunun altındaki radyo düğmelerinden kaldırmanız gerektiğini unutmayın; o zaman bu radyo düğmeleri grubundaki radyo düğmelerinden birine işaretli özellik / özellik ekleyebilirsiniz.

Bir radyo düğmesi grubunun tüm radyo düğmelerinden İşaretli Özelliği Kaldırmak İçin Kod -

$('[name="radioSelectionName"]').removeAttr('checked');

.prop ('işaretlendi', doğru) muhtemelen daha iyi veya .is ()
bladefist

3
@bladefist: .isburada yardımcı olmaz, ama katılıyorum .prop. O zamanlar mevcut değildi;) Cevabımı güncelleyeceğim. Teşekkürler!
Felix Kling

4
Radyo düğmesinin değerinde ondalık bir değer varsa, değeri tırnak içine almanız gerekir
Robert

1
@ Robert: Evet, muhtemelen. Gönderen belgelerinde : "bir tırnaksız tek bir kelime veya bir alıntı dize ya olabilir."
Felix Kling

5
Jonathan'ın cevabına bakın. JQuery dokümanları .val(), radyo veya onay kutusu gruplarında ayar değerlerinin desteklendiğini gösterir . Bu yanıtın yöntemi teknik olarak çalışır, ancak dolambaçlı ve daha az okunabilir / akılda kalıcıdır.
jinglesthula

144

Radyoları ve onay kutusunu kontrol etmenin daha iyi bir yolu vardır; ham değer yerine val yöntemine bir dizi değer iletmeniz gerekir

Not: Değeri tek başına ( bir dizinin içinde olmadan ) iletirseniz, bu, "grubum" un tüm değerlerinin değere ayarlanmasına neden olur.

$("input[name=mygroup]").val([5]);

Nasıl çalıştığını açıklayan jQuery dokümanı: http://api.jquery.com/val/#val-value

Ve .val([...])ayrıca gibi form elemanları ile çalışır <input type="checkbox">, <input type="radio">ve <option>bir iç s <select>.

Giriş ve unsurları biriyle eşleşen bir değeri olan seçenekler dizisi bu kontrolsüz veya seçilmemiş olacak dizinin elemanlarının birini eşleşmeyen bir değere sahip iken, kontrol veya seçilecektir

Bu çalışmayı gösteren keman: https://jsfiddle.net/92nekvp3/


Kabul edilen cevap (iyi olmalı). JQuery 1.0'dan itibaren, dokümanlardaki son örneğe bakın (aşağıya kaydırın): api.jquery.com/val Kopyalanan sayfa: jsfiddle.net/JoePC/w1f9ykso
JoePC

Bu, tüm giriş değerlerini ayarlamanın hoş ve tutarlı bir yoludur. Bunu öğrenmem 6 yıl sürdü çok kötü.
Jeff Lowery

1
Gruptaki tüm değerlerimin değeri kontrol etmek yerine neden geçilen değere ayarlandığını anlamaya çalışırken biraz zaman geçirdim. Görünüşe göre değeri bir dizinin içinde değil, kendi başına geçtim.
OXiGEN


8
$("input[name='mygroup'][value='5']").attr("checked", true);

7

Özellik değerini yukarıda belirtildiği gibi değiştirdiğinizde, changeolay tetiklenmez, bu nedenle bazı nedenlerle gerekirse bu şekilde tetikleyebilirsiniz

$('input[name=video_radio][value="' + r.data.video_radio + '"]')
       .prop('checked', true)
       .trigger('change');


1

Veya sadece değer niteliğini yazabilirsiniz:

$(':radio[value=<yourvalue>]').attr('checked',true);

Bu benim için çalışıyor.


0
var key = "Name_radio";
var val = "value_radio";
var rdo = $('*[name="' + key + '"]');
if (rdo.attr('type') == "radio") {
 $.each(rdo, function (keyT, valT){
   if ((valT.value == $.trim(val)) && ($.trim(val) != '') && ($.trim(val) != null))

   {
     $('*[name="' + key + '"][value="' + (val) + '"]').prop('checked', true);
   }
  })
}

4
Kodunuzun cevabınızda ne yaptığını açıklayabilir misiniz? En azından bir cümle. Ve çözümü nasıl çözdüğü. Teşekkür ederim.
Alex

0

Saf JavaScript sürümü:

document.querySelector('input[name="myradio"][value="5"]').checked = true;

-1
$('input[name="mygroup"]').val([5])

1
Çözümünüzü, halihazırda sağlanan diğer çözümlerden farklı kılan şeyi açıklayabilir misiniz?
Giovani Vercauteren

@Giovani Vercauteren, ismi bir dize olarak vermeliyiz. Bu yüzden mygroup kodda bir dize olarak vermek.
Anjitha
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.