2012-05-13 20 views
132

Kontrol etmedim zaman onay kutusunun işaretli ve engelli olduğunda selectbox etkindir jQuery'yi kullanarak seçim alanını nasıl devre dışı bırakır/etkinleştiririm?

[] I would like to order a [selectbox with pizza] pizza 

gibi bir formda bir seçenek oluşturmak istiyoruz.

ben bu kod ile gelip:

<form> 
<input type="checkbox" id="pizza" name="pizza" value="yes"> <label for="pizza"> 
I would like to order a</label> 
<select name="pizza_kind"> 
    <option>(choose one)</option> 
    <option value="margaritha">Margaritha</option> 
    <option value="hawai">Hawai</option> 
</select> 
pizza. 
</form> 

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"> 
</script> 
<script> 
var update_pizza = function() { 
    if ($("#pizza").is(":checked")) { 
     $("#pizza_kind").removeAttr("disabled"); 
    } 
    else { 
     $("#pizza_kind").prop('disabled', 'disabled'); 
    } 
}; 

$(update_pizza); 
$("#pizza").change(update_pizza); 
</script> 

nasıl .prop(), .attr() ve .disabled= kullanarak engelli özelliğini ayarlamak için çeşitli yöntemler denedi. Ancak hiçbir şey olmuyor. <select> yerine <input type="checkbox"> uygulandığında, kod mükemmel çalışır.

jQuery kullanılarak nasıl devre dışı bırakılır/etkinleştirilir <select>?

+0

merhaba, IE 10 bu yaklaşım çalışır? IE 10. – ROROROOROROR

cevap

228

Böyle kodu kullanmak istiyorum: example

+22

'$ ('# pizza_kind') prop ('disabled', false);' ve '$ ('# pizza_kind'). prop ('disabled', true);'. [JQuery belgelerinin söylediği gibi] (http://api.jquery.com/prop/): _Properties, seri hale getirilmiş HTML özelliğini değiştirmeden genellikle bir DOM öğesinin dinamik durumunu etkiler. Örnekler arasında giriş öğelerinin değer özelliği, girişlerin ve düğmelerin devre dışı bırakılmış özelliği veya bir onay kutusunun işaretli özelliği bulunur. .prop() yöntemi, .attr() yöntemi yerine devre dışı bırakmak ve kontrol etmek için kullanılmalıdır. JQuery 3 için – naor

+1

değerini almak ve ayarlamak için .val() yöntemi kullanılmalıdır, "$ ('# pizza_kind'). Prop ('disabled', true/false); Bildiğim kadarıyla –

+2

$ nedir (update_pizza); yapıyor? Bir jquery nesnesindeki işlevi mi sarmak? – Edward

6

kullanın aşağıdadır: basitçe

$("select").attr("disabled", "disabled"); 

Ya <select name="pizza_kind" id="pizza_kind"> gibi <select> etiketine id="pizza_kind" ekleyin: jsfiddle link

kodunuzu işe yaramadı nedeni basitçe $("#pizza_kind") olmadığı için id="pizza_kind" olmadığı için <select> öğesinin seçilmesi.

Düzenleme: Aslında daha iyi bir seçici $("select[name='pizza_kind']") geçerli: jsfiddle link

90

/devre dışı öncelikle seçer bir kimlik veya sınıf gerekir her şeyden seçer sağlamak için edebilmek.

Devre Dışı:

$('#id').attr('disabled', 'disabled'); 

etkinleştirme:

$('#id').removeAttr('disabled'); 
+6

seçmek için ".prop() yöntemi devre dışı bırakmak ve .attr() yöntemi yerine kaynak denetimi kullanılmalıdır" kaynak: http://api.jquery.com/prop/ – Colin

13

Sadece basit kullanın:

var update_pizza = function() { 
    $("#pizza_kind").prop("disabled", !$('#pizza').prop('checked')); 
}; 

update_pizza(); 
$("#pizza").change(update_pizza); 

0 Sonra böyle bir şey yapabileceğini

4

Sizin select bir kimliği yok, sadece bir isim çalışıyor

İşte
<form> 
    <input type="checkbox" id="pizza" name="pizza" value="yes"> 
    <label for="pizza">I would like to order a</label> 
    <select id="pizza_kind" name="pizza_kind"> 
    <option>(choose one)</option> 
    <option value="margaritha">Margaritha</option> 
    <option value="hawai">Hawai</option> 
    </select> 
    pizza. 
</form> 

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script> 
<script> 
    var update_pizza = function() { 
    if ($("#pizza").is(":checked")) { 
     $('#pizza_kind').prop('disabled', false); 
    } 
    else { 
     $('#pizza_kind').prop('disabled', 'disabled'); 
    } 
    }; 
    $(update_pizza); 
    $("#pizza").change(update_pizza); 
</script> 

.Demo

$("#pizza").on("click", function(){ 
    $("select[name='pizza_kind']").prop("disabled", !this.checked); 
}); 

: Eski dizisindeki yanıtlayan ama için http://jsbin.com/imokuj/2/edit

2

üzgün may benim kod future.i diğer yardımcı onay kutusu kontrol edilecek zaman aynı senaryo oldu Sen seçici değiştirmeniz gerekir Daha sonra seçilen birkaç giriş alanı diğer bilge devre dışı bırakılmış olacaktır.

$("[id*='chkAddressChange']").click(function() { 
    var checked = $(this).is(':checked'); 
    if (checked) { 
     $('.DisabledInputs').removeAttr('disabled'); 
    } else { 
     $('.DisabledInputs').attr('disabled', 'disabled'); 
    } 
}); 
12

Engelli, o jQuery ile

jQuery("#selectId").attr('disabled',true); 

Bu, bu HTML

<select id="selectId" name="gender" disabled="disabled"> 
    <option value="-1">--Select a Gender--</option> 
    <option value="0">Male</option> 
    <option value="1">Female</option> 
</select> 
yapacak olacağını DEVRE DIŞI İÇİN DOĞRU anlamı WHATWG belirttiği gibi select element bir Boolean Attribute olduğunu

Bu, hem XHTML and HTML (W3School reference)

için çalışır

Yine de

<select id="selectId" name="gender" disabled> 
sadece HTML için çalışır

değil XTML

NOT alma özelliği

jQuery("#selectId").prop('disabled', 'disabled'); 

olarak kullanılarak yapılabilir: bir engelli eleman olmayacak Bu soruda yanıtlandığı şekilde gönderilen formu kullanarak: The disabled form element is not submitted

NOT2: Devre dışı bırakılmış bir öğe grileşebilir.

NOT3:

elemana sevk edilmesini kullanıcı etkileşimi görev kaynağına sıraya herhangi tıklama olayları önlemek gerekir devre dışı bir form kontrolü.

TL; DR

<script> 
    var update_pizza = function() { 
     if ($("#pizza").is(":checked")) { 
      $('#pizza_kind').attr('disabled', false); 
     } else { 
      $('#pizza_kind').attr('disabled', true); 
     } 
    }; 
    $(update_pizza); 
    $("#pizza").change(update_pizza); 
</script> 
İlgili konular