[javascript] 자바 스크립트를 사용하여 입력 요소에 비활성화 된 속성 추가

입력 상자가 있고 비활성화하고 동시에 양식을 이식 할 때 문제를 피하기 위해 숨길 수 있기를 원합니다.

지금까지 입력을 숨기려면 다음 코드가 있습니다.

$(".shownextrow").click(function() {
    $(this).closest("tr").next().show().find('.longboxsmall').hide();
});

결과적으로 숨겨지는 입력입니다.

<input class="longboxsmall" type="text" />

disabled 속성을 입력에 추가하려면 어떻게해야합니까?



답변

$("input").attr("disabled", true); 현재로서는 더 이상 모르겠습니다.

2013 년 12 월이며 실제로 무엇을 말해야할지 모르겠습니다.

처음에는 항상 그렇고 .attr()항상 .prop()그렇습니다. 그래서 나는 여기로 돌아와 답을 업데이트하고 더 정확하게 만들었습니다.

그런 다음 1 년 후 jQuery가 다시 마음을 바꾸었고 심지어 이것을 추적하고 싶지 않습니다.

간단히 말해서, 지금 당장은 이것이 가장 좋은 대답입니다. “둘 다 사용할 수는 있지만 다릅니다.”

https://stackoverflow.com/a/5876747/257493 대신이 답변을 읽어보십시오.

해당 변경 사항에 대한 릴리스 정보는 다음과 같습니다.

값을 가져 오거나 설정하는 데 .attr () 또는 .prop ()를 사용해서는 안됩니다. 대신 .val () 메소드를 사용하십시오 (.attr ( “value”, “somevalue”)를 사용하면 1.6 이전과 마찬가지로 계속 작동합니다).

선호하는 사용법 요약

부울 속성 / 속성 및 html에없는 속성 (예 : window.location)에는 .prop () 메서드를 사용해야합니다. 다른 모든 속성 (html에서 볼 수있는 속성)은 .attr () 메서드를 사용하여 계속 조작 할 수 있으며 계속해야합니다.

또는 다른 말로하면 :

“.prop = 비 문서 자료”

“.attr”= 문서 내용

… …

API 안정성에 대한 교훈을 모두 배우기를 바랍니다.


답변

내 소스의 작업 코드 :

HTML 세계

<select name="select_from" disabled>...</select>

JS 월드

var from = jQuery('select[name=select_from]');

//add disabled
from.attr('disabled', 'disabled');



//remove it
from.removeAttr("disabled");


답변

jQuery를 사용하는 경우 disabled 속성을 설정하는 몇 가지 방법이 있습니다.

var $element = $(...);
    $element.prop('disabled', true);
    $element.attr('disabled', true);

    // The following do not require jQuery
    $element.get(0).disabled = true;
    $element.get(0).setAttribute('disabled', true);
    $element[0].disabled = true;
    $element[0].setAttribute('disabled', true);


답변

$(element).prop('disabled', true); //true|disabled will work on all
$(element).attr('disabled', true);
element.disabled = true;
element.setAttribute('disabled', true);

위의 모든 것은 완벽하게 유효한 솔루션입니다. 귀하의 요구에 가장 적합한 것을 선택하십시오.


답변

DOM 요소를 가져 와서 disabled 속성을 직접 설정할 수 있습니다.

$(".shownextrow").click(function() {
  $(this).closest("tr").next().show()
          .find('.longboxsmall').hide()[0].disabled = 'disabled';
});

또는 둘 이상이있는 경우 each()모든 것을 설정 하는 데 사용할 수 있습니다.

$(".shownextrow").click(function() {
  $(this).closest("tr").next().show()
          .find('.longboxsmall').each(function() {
               this.style.display = 'none';
               this.disabled = 'disabled';
          });
});


답변

jQuery의 attr()메소드를 사용하십시오.

$(this).closest("tr").next().show().find('.longboxsmall').attr('disabled', 'disabled');


답변

질문은 JS 로이 작업을 수행하는 방법을 묻는 것이기 때문에 바닐라 JS 구현을 제공하고 있습니다.

var element = document.querySelector(".your-element-class-goes-here");
// it's a good idea to check whether the element exists
if (element != null && element != undefined) {
  element.disabled = "disabled";
}