2012-05-13 36 views
132

私はjQueryを使用して選択フィールドを無効/有効にする方法は?

選択ボックスがチェックされていない時にチェックボックスがチェックされ、無効であるときにのみ有効になります
[] I would like to order a [selectbox with pizza] pizza 

のような形でオプションを作成したいと思います。

私はこのコードを思い付く:

<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> 

私は.prop().attr()、および.disabled=を使用してdisabled属性を設定する方法の様々な方法を試してみました。しかし、何も起こらない。 <select>の代わりに<input type="checkbox">に申し込むと、コードは完全に機能します。

<select> jQueryを使用して無効/有効にする方法はありますか?

+0

こんにちは、IE 10に、このアプローチ動作しますか? IE 10で選択フィールドを有効にする方法がわからない – ROROROOROROR

答えて

228

あなたは、このようなコードを使用したいと思います:example

+22

'$( '#pizza_kind')。prop( 'disabled'、false);' $( '#pizza_kind')。prop( 'disabled'、true); '。 [jQueryのドキュメントに記載されている](http://api.jquery.com/prop/):_Propertiesは、通常、直列化されたHTML属性を変更せずにDOM要素の動的状態に影響を与えます。例には、入力要素のvalueプロパティ、入力とボタンの無効なプロパティ、またはチェックボックスのcheckedプロパティが含まれます。 .prop()メソッドを使用して、.attr()メソッドの代わりに無効を設定してチェックする必要があります。 .val()メソッドは、jQuery 3のvalue._ – naor

+1

の取得と設定に使用する必要があります。 "$( '#pizza_kind')。prop( 'disabled'、true/false);"私の知る限りでは –

+2

$(update_pizza)とは何ですか?やっている? jqueryオブジェクトに関数をラップしますか? – Edward

6

は、次を使用します。

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

それとも単に<select name="pizza_kind" id="pizza_kind">のように、<select>タグにid="pizza_kind"を追加:jsfiddle link

$("#pizza_kind")ではないので、あなたのコードは動作しませんでした理由は単純ですid="pizza_kind"がないため、<select>要素を選択してください。

編集:実際には、より良い選択は$("select[name='pizza_kind']")です:jsfiddle link

90

は選択が最初にすべてのあなたの選択のIDやクラスを必要とする有効/無効にすることができるようにするに。

を無効にする:

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

有効にする:

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

".attr()メソッドの代わりに.prop()メソッドを使用して無効にしてチェックする必要があります" source:http://api.jquery.com/prop/ – Colin

13

は、単に使用します。

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

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

0次に、あなたがこのような何かを行うことができます

4

あなたselect IDを持っていない、名前だけが働いている

ここ
<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> 

。ときチェックボックスがチェックされるのと同じシナリオにあった古いスレッドに答えるために残念http://jsbin.com/imokuj/2/edit

2

が、私のコードはfuture.iに他のことができますがあります。

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

デモ:あなたのセレクタを変更する必要があります選択された入力フィールドの数が少なくなると、それ以外の有効な無効化が可能になります。

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

障害者は、jQueryを使ってを無効にするには、RIGHT WAYは、これは、この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> 
になるだろう

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

になることを意味し、WHATWGで述べたようにselect elementBoolean Attributeです

これは両方の場合に有効ですXHTML and HTML (W3School reference)

しかし、それはまた

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

はHTMLだけの作品ではなくXTML

NOTE

<select id="selectId" name="gender" disabled> 

なっプロパティとしてそれを使用して行うことができます。無効の要素はなくなりますがこの質問に回答したフォームに投稿:The disabled form element is not submitted

注2:無効な要素は、グレー表示されることがあります。

注3:

無効になっているフォームコントロールは、要素に派遣されてから、ユーザーとの対話タスクのソースにキューイングされているすべてのクリックイベントを防ぐ必要があります。

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> 
関連する問題