jquery를 사용하여 입력 유형을 얻는 방법은 무엇입니까?


147

입력 유형이 항상 다른 페이지가 있으며 입력 유형에 따라 값을 가져와야합니다. 따라서 유형이 라디오 인 경우 어느 것이 선택되어 있는지 확인해야합니다. 확인란이면 이제 어느 것이 선택되어 있는지 확인해야합니다. 드롭 다운 인 경우 어느 것이 선택되어 있는지 알고 있어야합니다. 텍스트 / 텍스트 영역 값을 알아야합니다.

그 방법에 대한 아이디어가 있습니까?


2
여러분 모두 입력 ID에 의존하지만 라디오 또는 확인란의 경우 동일한 ID를 가져야합니까? ID가 고유해야한다는 것을 알고 있습니다.
Luci

답변:


270

이 답변의 인기와 속성 및 속성에 관한 버전 1.9 (및 2.0)의 jQuery 변경으로 인해 입력에 대한 속성 / 속성에 액세스 할 때의 작동 방식을 확인하기 위해 메모와 바이올린을 추가했습니다. 버튼과 일부 선택. 여기에 바이올린 : http://jsfiddle.net/pVBU8/1/


모든 입력을 얻으십시오 :

var allInputs = $(":input");

모든 입력 유형을 얻으십시오.

allInputs.attr('type');

값을 얻으십시오 :

allInputs.val();

참고 : .val ()은 관련이있는 유형에 대해 : checked와 동일하지 않습니다. 사용하다:

.attr("checked");

편집 : 2013 년 2 월 1 일-re : jQuery 1.9 attr ()이 아닌 prop ()을 사용하십시오 .attr은 변경된 속성에 적절한 값을 반환하지 않기 때문입니다.

.prop('checked');

또는 단순히

$(this).checked;

수표의 가치를 얻으려면-현재 수표가 무엇이든간에. 또는``: checked ''를 사용하여 확인 된 항목 만 원하는 경우에만 사용하십시오.

편집 : 다음은 유형을 얻는 또 다른 방법입니다.

var allCheckboxes=$('[type=checkbox]');

EDIT2 : 다음의 형식에 유의하십시오.

$('input:radio');

이상하다

$(':radio');

둘 다와 동일합니다.

$('input[type=radio]');

그러나 "입력"이 바람직하므로 입력 만 가져오고 다음과 같은 형식을 $(':radio')사용할 때 범용 '*'를 사용하지 않습니다.$('*:radio');

편집 2015 년 8 월 19 일 : $('input[type=radio]');최신 브라우저가 라디오 입력 검색을 최적화 할 수 있도록 선호 사항을 사용해야합니다.


의견 수정 2013 년 2 월 1 일 다시 : 요소 @dariomac 선택

$('select').prop("type");

"multiple"속성에 따라 "select-one"또는 "select-multiple"을 반환합니다.

$('select')[0].type 

첫 번째 선택 (있는 경우)에 대해 동일을 반환합니다. 과

($('select')[0]?$('select')[0].type:"howdy") 

존재하는 경우 유형을 반환하거나 존재하지 않는 경우 "howdy"를 반환합니다.

 $('select').prop('type');

DOM에서 첫 번째 속성이 존재하는 경우 속성을 반환하거나 존재하지 않는 경우 "정의되지 않음"

$('select').type

존재하는 경우 첫 번째 유형이 있거나 존재하지 않는 경우 오류를 리턴합니다.


나는 이것을 시도했다 : var type = $ ( ": input [name ="+ name + "]"). attr ( 'type'); 그리고 그것은 효과가 있었다! 감사.
Luci

2
"드롭 다운"또는 입력 선택 ...은 어떻습니까? 입력 태그가 아니기 때문에 ... 지금 같은 문제가 있지만 type dom 속성을 사용
하려고

allInputs.attr('type');첫 번째 요소 입력 유형 만 가져옵니다. allInputs[0].attr('type');컬렉션에 둘 이상의 요소가있는 경우 동일은 간다 allInputs.val();당신은 유형 또는 각 요소의 값이 뭔가를 원한다면, 당신은 같은 것을해야 할 것allInputs.each(function(){ var type = $(this).attr('type'); var val = $(this).val() });
andyface

바이올린이이 날짜를 기준으로 82 개의 개정판으로 생명을 얻었습니다. jsfiddle.net/pVBU8/82
Mark Schultheiss

15

다음을 수행 할 수 있습니다.

var inputType = $('#inputid').attr('type');

이것은 각 라디오에 동일한 ID를 부여해야한다는 것을 의미합니까?
Luci

6
@zeina- 요소에 동일한 ID를 지정 하지 마십시오 .
113716

@ patrick- 나는 ID가 고유해야한다는 것을 알고 있지만 왜 ID로 입력 유형을 가져 오라고 제안하고 있으며 이름에 따라 라디오와 확인란이있을 수 있습니까?!
Luci

1
아니요 동일한 ID를 부여 할 수 없습니다. 유효하지 않습니다. : input jQuery 선택기를 사용할 수 있습니다
Mark Schultheiss

9

당신이 말하는 것은 입력 유형에 대해 걱정하지 않고 값을 가진 폼 안에 모든 입력을 가져 오려면 다음과 같이하십시오.

예 : http://jsfiddle.net/nfLfa/

var $inputs = $('form').find(':checked,:selected,:text,textarea').filter(function() {
    return $.trim( this.value ) != '';
});

이제 값이있는 입력 요소 세트가 있어야합니다.

배열에 값을 넣을 수 있습니다.

var array = $inputs.map(function(){
    return this.value;
}).get();

또는 직렬화 할 수 있습니다.

var serialized = $inputs.serialize();

7
GetValue = function(id) {
  var tag = this.tagName;
  var type = this.attr("type");

  if (tag == "input" && (type == "checkbox" || type == "radio"))
    return this.is(":checked");

  return this.val();
};


4

보고 시작하기 가장 좋은 곳은 http://api.jquery.com/category/selectors/

이것은 당신에게 좋은 예를 줄 것입니다.

Ultamatly DOM에서 요소 선택은 CSS 선택기를 사용하여 이루어 지므로 id로 요소를 얻는 것에 대해 생각할 경우 모든 입력 태그가 $ ( 'input')을 사용하려면 $ ( '# elementId')를 사용하려고합니다 마지막으로 체크 박스 유형의 모든 입력 태그에 $ ( 'input, [type = checkbox])를 사용하려는 경우 원하는 부분을 완성하십시오.

참고 : 속성에있는 대부분의 값을 찾을 수 있으므로 속성에 대한 CSS 선택기는 다음과 같습니다. [attributeName = value]

목록 상자와 관련하여 드롭 다운을 요청했기 때문에 다음을 시도하십시오.


$('select, [size]).each(function(){
  var selectedItem = $('select, [select]', this).first();
});

코드는 메모리에서 온 것이므로 작은 오류가 발생했을 때주의하십시오


여기서 말하는 '[size]'는 무엇입니까?
낯선 사람

@Udhayakumar '[size]'는 size 속성이있는 select 요소 만 포함하도록 결과를 필터링하므로 드롭 다운이 아닌 목록 상자 만 선택됩니다.
Robert

목록 상자-> 텍스트 상자를 의미합니까?
낯선 사람

1
@Udhayakumar, 아니요, 목록 상자 는 드롭 다운과 목록 상자의 차이점을 보려면 이 링크 [ jsfiddle.net/565961fj ]를 따르십시오 .
Robert

3
var val = $('input:checkbox:checked, input:radio:checked, \
   select option:selected, textarea, input:text',
   $('#container')).val();

코멘트:

  1. 텍스트 영역, 입력 필드, 선택 양식, 단일 선택 단추 세트 또는 단일 체크 박스가 될 수있는 하나의 양식 요소 가 있다고 가정 합니다 (더 많은 체크 상자가 필요한 경우 코드를 업데이트해야 함).

  2. 해당 요소는 ID가있는 요소 안에 있습니다 container(페이지의 다른 요소와 모호함을 제거하기 위해).

  3. 그런 다음 코드는 찾은 첫 번째 일치하는 요소 의 값을 반환합니다 . 내가 계속 사용 :checked하고 있기 때문에 이것은 항상 당신이 찾고있는 것의 가치이어야합니다.


3

attr 기능이 더 이상 사용되지 않는 것 같습니다

$(this).attr('TYPE')
undefined
$(this).prop('type')
"text"

0

내 응용 프로그램에서 나는 동일한 id (bad)를 가진 두 개의 다른 요소로 끝났습니다. 하나는 div이고 다른 하나는 입력이었습니다. 입력 내용을 요약하려고 시도하고 중복 ID를 인식하는 데 시간이 걸렸습니다. # 앞에 원하는 요소 유형을 배치하여 입력 요소의 값을 가져 와서 div를 삭제할 수있었습니다.

$("input#_myelementid").val();

도움이 되길 바랍니다.


0
<!DOCTYPE html>
<html>

<head>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <script>
        $(document).ready(function(){
          $(".show-pwd").click(function(){
          alert();
            var x = $("#myInput");
            if (x[0].type === "password") {
              x[0].type = "text";
            } else {
              x[0].type = "password";
            }
          });
        });
    </script>
</head>

<body>
    <p>Click the radio button to toggle between password visibility:</p>Password:
    <input type="password" value="FakePSW" id="myInput">
    <br>
    <br>
    <input type="checkbox" class="show-pwd">Show Password</body>

</html>

0
  <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <script type="text/javascript" src="hs/jquery1.js"></script>
        <title>Document</title>
    </head>
    <body>
        <form>
            <input type="text" class="tamil">
            <input type="button" class="english">
        </form>
        <script>
            $("input").addClass(function(index){
                    console.log($(this).attr('type'));
            })
        </script>
    </body>
    </html>

나는 양식 양식을 얻는다

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.