jQuery를 사용하여“disabled”속성을 제거하는 방법은 무엇입니까?


394

처음에는 입력을 비활성화 한 다음 링크를 클릭하면 활성화 할 수 있습니다.

이것은 지금까지 시도한 것이지만 작동하지 않습니다.

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'));
});

2
나는 당신의 문제를 보지 못합니다. 뭘 물어 보는 거냐?
nicosantangelo

그래서 질문은 무엇입니까? 무슨 문제가 발생했는지
Satya Teja

7
prop ()-.prop ( 'disabled', false) 사용
Jay Blanchard

문제가 해결되면 다른 사람이 알 수 있도록 허용 된 (실제) 답변을 선택하십시오.
Dhamu

문제는 클릭 후 비활성화되지 않는다는 것입니다
fatiDev

답변:


817

prop()jQuery를 사용할 때 항상 메소드를 사용하여 요소를 사용 또는 사용 안함으로 설정하십시오 (이유는 아래 참조).

귀하의 경우에는 다음과 같습니다.

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

여기에 jsFiddle 예제가 있습니다.


/ 를 prop()사용 하여 이것을 할 수있을 때 왜 사용 합니까?attr()removeAttr()

기본적으로, prop()얻거나 설정할 때 사용되어야한다 특성 (예 : autoplay, checked, disabledrequired다른 사람의 사이에).

을 사용 removeAttr()하면 disabled속성 자체를 완전히 제거하는 반면 prop()속성의 기본 부울 값을 false로 설정하는 것입니다.

/을 사용하여 수행 할 수는 있지만 수행 해야 한다는 의미는 아닙니다 (이 경우와 같이 이상하고 문제가있는 행동을 일으킬 수 있음).attr()removeAttr()

다음 추출 ( prop ()jQuery 문서 에서 발췌 )은 이러한 요점을보다 자세히 설명합니다.

"특정 상황에서는 속성과 속성의 차이가 중요 할 수 있습니다. jQuery 1.6 이전에는 .attr()메소드가 일부 속성을 검색 할 때 특성 값을 고려하여 일관성이없는 동작이 발생할 수 있습니다. jQuery 1.6부터이 .prop() 메소드는 명시 적으로 검색하는 방법을 제공합니다 속성 값을 .attr()검색 하는 동안 속성 을 검색합니다. "

"속성은 일반적으로 일련 HTML 특성을 변화시키지 않고 DOM 요소의 동적 상태에 영향을 준다. 예를 포함하는 value 입력 요소의 특성은 disabled입력 및 버튼 속성, 또는 checked체크 박스의 속성. .prop()방법을 설정하기 위해 사용되어야 disabled하고 checked대신 .attr() 방법은. .val()방법은 얻고 설정하는 데 사용되어야한다 value. "


3
사람들은 또한 완전히 휴식 더러운의 checkedness 플래그를 접하게 알아야 attrprop: 체크 박스에 대한 w3.org/TR/html5/forms.html#concept-input-checked-dirty 내부 jQuery를 제외하고는 마법을 해결.
Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功

19
흠, .prop ( "disabled", false)는 버튼에서 작동하지 않는 것 같습니다. 태그에 'disabled'속성을 값없이 남겨 둡니다.
UpTheCreek

3
@UpTheCreek도 나를 위해 작동하지 않았습니다. 그러나 '평소와 같이'이 절의 범위 문제라는 것을 알았습니다. 특정의 경우 .prop()요소에 의해 지적에 실행 된 this( this.prop("disabled", false)하지만 잘못된 요소에 결합 된 콜백에있는 I 공통해야했다, 그래서 var that = this해결 방법을 함께 플레이하려고합니다. .apply()/이 .call()잘 작동하지 않는, 나도 몰라 console.log(this)전화하기 직전에 원하는 객체로 설정된 경우 다시 확인하십시오this.prop(...)
Kamafeather

3
이 답변을 문서 섹션으로의 전환 후보로 추천합니다. 명확하고 완전하며 잘 작성되었습니다.
Anne Gunn

4
removeAttr ()을 사용하면 비활성화 된 속성 자체를 완전히 제거하는 반면 prop ()은 속성의 기본 부울 값을 false로 설정하기 만합니다. 나는 이것이 사실이라고 믿지 않습니다. HTML에서는 disabled속성이 존재하기 만하면 요소가 비활성화됩니다. 예를 들어, <button disabled="false"></button> 버튼을 사용하지 않으면 속성을 제거해야합니다. 이 코드 펜$('button').prop('disabled', false); 에서 관찰 한 것처럼 jQuery 를 호출 하면 속성이 제거됩니다 (속성 제거를 확인하기 위해).
Naftali

42
<input type="text" disabled="disabled" class="inputDisabled" value="">
​<button id="edit">Edit</button>​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​

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

http://jsfiddle.net/ZwHfY/


42

비활성화 된 속성 사용을 제거하려면

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

비활성화 된 속성 사용을 추가하려면

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

즐겨 :)


4
또는 바닐라 js의 element.removeAttribute ( 'disabled')
Dragos Rusu

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
 });

6
이것은 실제로 나를 위해 일하고 있습니다. prop ( 'disabled', false)는 놀랍게도 작동하지 않았습니다.
Stefan

@Stefan도 마찬가지입니다! 이유를 찾았습니까?
Alexander Suraphel

1
나는이 고대 스레드 알고 있지만 누군가가 여전히 고투하는 경우, 내 문제는 요소가이었다이었다 <a>있는, .prop('disabled', false)일을하지 않습니다. 나는 그것을 a로 바꾸었고 <button>지금은 작동합니다
Oliver Nagy


3

이것을 쉽게 설정할 수 있다고 생각했습니다.

$(function(){
$("input[name^=radio_share]").click
(
    function()
    {
        if($(this).attr("id")=="radio_share_dependent")
        {
            $(".share_dependent_block input, .share_dependent_block select").prop("disabled",false);   
        }
        else
        {
            $(".share_dependent_block input, .share_dependent_block select").prop("disabled",true);   
        }
    }
 );
});

3

이것은 나를 위해 일한 유일한 코드였습니다.

element.removeProp('disabled')

removeProp아닙니다 removeAttr.

나는 jQuery 2.1.3여기를 사용하고 있습니다.


12
jQuery 문서에서 : 중요 사항 : .removeProp () 메소드를 사용하여 이러한 특성을 false로 설정해서는 안됩니다. 기본 속성이 제거되면 다시 추가 할 수 없습니다. 자세한 내용은 .removeProp ()를 참조하십시오.
XanatosLightfiren 2016 년

2

JQuery가없는 2018

질문은 JQuery에 관한 것입니다.이 답변은 FYI입니다.

document.getElementById('edit').addEventListener(event => {
    event.preventDefault();
    [...document.querySelectorAll('.inputDisabled')].map(e => e.disabled = false);
}); 

0

이 질문은 특히 jQuery에 대해 언급하지만 jQuery 없이이 작업을 수행하려는 경우 바닐라 JavaScript의 해당 내용은 다음과 같습니다.

elem.removeAttribute('disabled');

elem.removeAttr('disabled');나를 위해 일합니다
Cheng Hui Yuan
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.