답변:
disabled
속성 을 변경하려면 .prop()
함수를 사용해야합니다 .
$("input").prop('disabled', true);
$("input").prop('disabled', false);
이 .prop()
함수는 존재 .attr()
하지 않지만 비슷합니다.
disabled 속성을 설정하십시오.
$("input").attr('disabled','disabled');
다시 활성화하려면 올바른 방법을 사용하는 것입니다 .removeAttr()
$("input").removeAttr('disabled');
항상 실제 DOM 객체에 의존 할 수 있으며 하나의 요소 만 처리하는 경우 다른 두 옵션보다 약간 빠릅니다.
// assuming an event handler thus 'this'
this.disabled = true;
.prop()
또는 .attr()
메소드 를 사용하면 선택된 여러 항목에 대해 속성을 설정할 수 있다는 장점이 있습니다.
참고 : 1.6 에는와.removeProp()
비슷한 방법이 removeAttr()
있지만 설명서의 Excerpt 와 같은 기본 속성에는 사용하지 않아야'disabled'
합니다.
참고 :이 방법을 사용하여 확인, 비활성화 또는 선택과 같은 기본 속성을 제거하지 마십시오. 이렇게하면 속성이 완전히 제거되고 일단 제거되면 요소에 다시 추가 할 수 없습니다. 대신 .prop ()를 사용하여 이러한 속성을 false로 설정하십시오.
사실, 나는이 방법에 대해 많은 합법적 인 사용이 의심된다. 부울 소품은 1.5의 "속성"과 같이 "제거"하는 대신 거짓으로 설정해야한다.
':input'
뿐만 아니라을 (를) 선택해야합니다 'input'
. 후자는 실제 <input> 요소 만 선택합니다.
input,textarea,select,button
보다 사용하기 위해 조금 더 :input
- :input
이 선택해야하기 때문에 선택은 매우 비효율적으로 *
다음 태그 이름하여 각 요소 및 필터를 통해 루프 - 당신이 4 태그 이름 선택기를 전달하면 직접이 훨씬 빠릅니다. 또한 :input
표준 CSS 선택 도구가 아니기 때문에 가능한 모든 성능 향상 querySelectorAll
이 손실됩니다
.removeProp("disabled")
Chrome과 같은 일부 브라우저의 경우 @ThomasDavidBaker가 지적한 것처럼 "속성이 완전히 제거되고 다시 추가되지 않습니다"라는 문제가 발생했지만 Firefox와 같은 일부 브라우저에서는 제대로 작동했습니다. 우리는 여기서 조심해야합니다. 항상 .prop("disabled",false)
대신 사용
ECMA6 (????)로 상황이 크게 바뀌지 않는 한 새로운 컨벤션을 위해 & 앞으로 계속 적응할 수 있도록 만들기 위해 :
$(document).on('event_name', '#your_id', function() {
$(this).removeAttr('disabled');
});
과
$(document).off('event_name', '#your_id', function() {
$(this).attr('disabled','disabled');
});
$(document).on('event_name', '#your_id', function() {...})
대신에 $('#your_id').on('event_name', function() {...})
. jQuery .on () 문서 에서 설명한 것처럼 전자는 위임을 사용 하고 버블 링 되는 모든 event_name
이벤트를 수신 document
하고 일치 하는지 확인합니다 #your_id
. 후자는 구체적으로 $('#your_id')
만 이벤트를 듣고 확장 성이 더 좋습니다.
// Disable #x
$( "#x" ).prop( "disabled", true );
// Enable #x
$( "#x" ).prop( "disabled", false );
입력 또는 텍스트 영역과 같은 양식 요소를 비활성화 / 활성화해야하는 경우가 있습니다. Jquery를 사용하면 disabled 속성을 "disabled"로 설정하여 쉽게 만들 수 있습니다. 예를 들어 :
//To disable
$('.someElement').attr('disabled', 'disabled');
비활성화 된 요소를 활성화하려면이 요소에서 "disabled"특성을 제거하거나 문자열을 비워야합니다. 예를 들어 :
//To enable
$('.someElement').removeAttr('disabled');
// OR you can set attr to ""
$('.someElement').attr('disabled', '');
참조 : http://garmoncheg.blogspot.fr/2011/07/how-to-disableenable-element-with.html
$("input")[0].disabled = true;
또는
$("input")[0].disabled = false;
코드의 전역 어딘가에 넣을 수 있습니다.
$.prototype.enable = function () {
$.each(this, function (index, el) {
$(el).removeAttr('disabled');
});
}
$.prototype.disable = function () {
$.each(this, function (index, el) {
$(el).attr('disabled', 'disabled');
});
}
그리고 다음과 같이 쓸 수 있습니다.
$(".myInputs").enable();
$("#otherInput").disable();
prop
하고 하지 attr
으로 disabled
는 (위 jQuery를 1.6 가정) 제대로 작동하는 속성입니다.
attr
? 나는 일부 프로젝트에서 위 코드를 사용하고 그것이 잘 작동하는 것을 기억하는 한
checked
확인란 의 속성입니다. 사용 attr
하면 같은 결과가 나오지 않습니다.
요소를 사용하거나 사용하지 않도록 설정할 수있는 방법에는 여러 가지가 있습니다 .
접근법 1
$("#txtName").attr("disabled", true);
접근법 2
$("#txtName").attr("disabled", "disabled");
jQuery 1.7 이상 버전을 사용하는 경우 attr () 대신 prop ()를 사용하십시오.
$("#txtName").prop("disabled", "disabled");
요소를 활성화하려면 비활성화하기 위해 수행 한 작업과 반대로해야합니다. 그러나 jQuery는 속성을 제거하는 다른 방법을 제공합니다.
접근법 1
$("#txtName").attr("disabled", false);
접근법 2
$("#txtName").attr("disabled", "");
접근법 3
$("#txtName").removeAttr("disabled");
jQuery 1.7 이상을 사용하는 경우 attr () 대신 prop ()를 사용하십시오. 그렇습니다. 이것은 jQuery를 사용하여 요소를 활성화하거나 비활성화하는 방법입니다.
2018 년 업데이트 :
이제이 jQuery를 필요가 없습니다 그리고 그것은을하고있는 동안 이후 document.querySelector
또는 document.querySelectorAll
거의 정확히 같은 일을 할 (여러 요소) $ 플러스 더 명시 것과 같은 getElementById
, getElementsByClassName
,getElementsByTagName
"입력 확인란"클래스의 한 필드 비활성화
document.querySelector('.input-checkbox').disabled = true;
또는 여러 요소
document.querySelectorAll('.input-checkbox').forEach(el => el.disabled = true);
jQuery prop () 메소드를 사용하여 jQuery를 사용하여 양식 요소를 제어하거나 동적으로 제어 할 수 있습니다. prop () 메소드에는 jQuery 1.6 이상이 필요합니다.
예:
<script type="text/javascript">
$(document).ready(function(){
$('form input[type="submit"]').prop("disabled", true);
$(".agree").click(function(){
if($(this).prop("checked") == true){
$('form input[type="submit"]').prop("disabled", false);
}
else if($(this).prop("checked") == false){
$('form input[type="submit"]').prop("disabled", true);
}
});
});
</script>
입력 유형에 대해 true를 비활성화하십시오.
특정 입력 유형의 경우 ( 예 : 텍스트 유형 입력 )
$("input[type=text]").attr('disabled', true);
모든 유형의 입력 유형
$("input").attr('disabled', true);
$("input[name=method]").prop('disabled', true);
접근법 4 (이것은 와일드 코더 답변의 확장입니다 )
이렇게 사용하십시오
$( "#id" ).prop( "disabled", true );
$( "#id" ).prop( "disabled", false );
<html>
<body>
Name: <input type="text" id="myText">
<button onclick="disable()">Disable Text field</button>
<button onclick="enable()">Enable Text field</button>
<script>
function disable() {
document.getElementById("myText").disabled = true;
}
function enable() {
document.getElementById("myText").disabled = false;
}
</script>
</body>
</html>
jQuery Mobile에서 :
$('#someselectElement').selectmenu().selectmenu('disable').selectmenu('refresh', true);
$('#someTextElement').textinput().textinput('disable');
$('#someselectElement').selectmenu().selectmenu('enable').selectmenu('refresh', true);
$('#someTextElement').textinput('enable');