programing

숨겨진 항목을 제외한 JQuery 선택 입력 필드

randomtip 2021. 1. 18. 07:55
반응형

숨겨진 항목을 제외한 JQuery 선택 입력 필드


체크 박스와 기타 양식 필드 (텍스트 상자, 숨겨진 필드, 선택 목록)가 포함 된 테이블에 행이 있습니다. 확인란을 선택하면 숨겨진 필드를 제외하고 해당 행의 모든 ​​양식 필드를 비활성화하고 싶습니다. 나는 이것이 대부분 작동하지만 숨겨진 필드를 무시할 수 없습니다.

테이블 행의 모든 ​​양식 필드를 선택하고 선택 항목에서 숨겨진 필드를 무시하는 가장 좋은 방법은 무엇입니까?


$(":input:not([type=hidden])")

": input"은 jQuery 의사 선택기입니다 ... "모든 입력, 텍스트 영역, 선택 및 단추 요소를 선택합니다." http://api.jquery.com/input-selector/


"숨김"으로 가정하면 다음을 의미합니다 type="hidden".

<input type="hidden" name="foo" value="bar">

그런 다음 속성이 같지 않음 선택기사용하여 이를 수행 할 수 있습니다 .

$("tr input:checkbox").click(function() {
  var cb = $(this);
  var tr = $(this).closest("tr");
  if (cb.val()) {
    tr.find("input[type!='hidden']").attr("disabled", true);
  } else {
    tr.find("input[type!='hidden']").removeAttr("disabled");
  }
});

내 일반적인 조언은 속성 선택자를 피하는 것입니다. 느립니다. 관련 입력 (숨겨진 입력 또는 숨겨지지 않은 입력)에 클래스를 제공 한 다음 선택기에서 사용합니다.

그러나 "표시되지 않음"과 같이 "숨김"을 의미하는 경우 :visible선택기 를 사용하십시오 .

$("tr input:checkbox").click(function() {
  var cb = $(this);
  var tr = $(this).closest("tr");
  if (cb.val()) {
    tr.find("input:visible").attr("disabled", true);
  } else {
    tr.find("input:visible").removeAttr("disabled");
  }
});

숨겨진 선택기를 사용하여이 문제를 해결할 수도 있습니다.

$("input:not(:hidden)")

참조 : jQuery 숨겨진 선택기


jquery에서 간단한 방법을 찾았습니다.

$("tr input").not("input[type='hidden']")

아래 코드 스 니펫 tabsDiv에는 여러 html 요소를 포함 하는 ID가있는 div가 있으며이 코드는이 div 내부의 모든 입력 요소를 가져옵니다 hidden.

$("#tabsDiv").find("input").not("input[type='hidden']")

.........

$('tr input').attr('disabled', true)
$('tr input[type="hidden"]').removeAttr('disabled')

먼저 "selector"확인란에 태그를 지정해야합니다 (예 : 클래스 속성 "selector). 일반 양식 요소 대신 검사에 사용됨을 명확히 한 다음 다음을 사용합니다.

$('table :checkbox.selector').click(function(ev) {
    $(ev.currentTarget)
            .parents('td').siblings('td')
            .find(':input:not([type=hidden])')
            .attr('disabled', ev.currentTarget.checked);
});

이 솔루션은 모든 입력 (예 : 선택 목록, 텍스트 영역)에 대해 작동하며 선택기 확인란 자체를 비활성화하지 않습니다.

최신 jQuery를 사용한다고 가정합니다.


사용자에게 표시되는 입력 요소 만 사용함을 의미하는 visible 필터를 추가하기 만하면됩니다.
이것은 나를 위해 일했습니다 30 자에 대한 설명을 추가하고 있습니다.

$ ( "입력 : 표시")

참조 URL : https://stackoverflow.com/questions/2396846/jquery-select-input-fields-except-hidden

반응형