457

最初に入力を無効にしてから、リンクをクリックして有効にする必要があります。

これは私がこれまでに試したことですが、うまくいきません。

HTML:

<input type="text" disabled="disabled" class="inputDisabled" value="">

jQuery:

$("#edit").click(function(event){
   event.preventDefault();
   $('.inputDisabled').removeAttr("disabled")
});


これは私trueを示していfalseますが、入力には何も変わりません:

$("#edit").click(function(event){
   alert('');
   event.preventDefault();
   alert($('.inputDisabled').attr('disabled'));
   $('.inputDisabled').removeAttr("disabled");
   alert($('.inputDisabled').attr('disabled'));
});
4

11 に答える 11

937

jQuery を使用する場合は、常にメソッドを使用してprop()要素を有効または無効にします (理由については以下を参照してください)。

あなたの場合、それは次のようになります。

$("#edit").click(function(event){
   event.preventDefault();
   $('.inputDisabled').prop("disabled", false); // Element(s) are now enabled.
});

jsFiddle の例はこちら。


これを行うために/をprop()使用できるのに、なぜ使用するのですか?attr()removeAttr()

基本的に、プロパティprop()取得または設定するときに使用する必要があります( 、など)。autoplaycheckeddisabledrequired

を使用すると、属性自体removeAttr()が完全に削除されますが、プロパティの基になるブール値が false に設定されるだけです。disabledprop()

やりたいことは/を使用して実行できますが、実行する必要があるという意味ではありません(この場合のように、奇妙な/問題のある動作を引き起こす可能性があります)。attr()removeAttr()

次の抜粋 ( prop() の jQuery ドキュメントから抜粋) は、これらの点をより詳細に説明しています。

「属性とプロパティの違いは、特定の状況で重要になる可能性があります。jQuery 1.6 より前では、.attr()メソッドは一部の属性を取得するときにプロパティ値を考慮に入れることがあり、これが一貫性のない動作を引き起こす可能性がありました。jQuery 1.6 の時点で、.prop() メソッドは明示的に取得する方法を提供します。プロパティ値、 .attr()属性を取得します。」

「プロパティは通常、シリアル化された HTML 属性を変更せずに DOM 要素の動的状態に影響を与えます。例には、value 入力要素のdisabledプロパティ、入力とボタンのcheckedプロパティ、またはチェックボックスのプロパティが含まれます。.prop()メソッドは、設定するために使用しdisabledchecked代わりに.attr() メソッド。このメソッドは.val()の取得と設定に使用する必要があります value。"

于 2012-11-29T13:09:23.567 に答える
63

無効な属性の使用を削除するには、

 $("#elementID").removeAttr('disabled');

無効な属性の使用を追加するには、

$("#elementID").prop("disabled", true);

楽しみ :)

于 2015-01-21T14:35:15.910 に答える
44
<input type="text" disabled="disabled" class="inputDisabled" value="">
​&lt;button id="edit">Edit</button>​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​

$("#edit").click(function(event){
    event.preventDefault();
    $('.inputDisabled').removeAttr("disabled")
});​

http://jsfiddle.net/ZwHfY/

于 2012-11-29T13:12:00.070 に答える
16

このように使って、

HTML:

<input type="text" disabled="disabled" class="inputDisabled" value="">

<div id="edit">edit</div>

JS:

 $('#edit').click(function(){ // click to
            $('.inputDisabled').attr('disabled',false); // removing disabled in this class
 });
于 2012-11-29T13:12:00.277 に答える
9

無効な状態を切り替えようとしていると思います。魔女の場合は、これを使用する必要があります(この質問から):

$(".inputDisabled").prop('disabled', function (_, val) { return ! val; });

これが実用的なフィドルです。

于 2012-11-29T13:15:14.037 に答える
3

これは私のために働いた唯一のコードでした:

element.removeProp('disabled')

removePropではないことに注意してくださいremoveAttr

ここを使ってjQuery 2.1.3います。

于 2015-04-03T00:27:32.863 に答える
1

この質問では特にjQueryについて言及していますが、jQueryを使用せずにこれを達成しようとしている場合、バニラJavaScriptで同等のものは次のとおりです。

elem.removeAttribute('disabled');
于 2018-03-02T20:54:25.257 に答える