[jQuery] 특정 select에서 value가 있는 option만을 선택하려면 어떻게 해야 할까요?

조회수 2200회

초보 개발자입니다.

개발요청을 받았는데 나름대로 짜긴 짰지만 더 좋은 방법이 없을까 해서 질문 올립니다.

<select id="selectid">
    <option value="">선택하세요</option>
    <option value="choose1">선택1</option>
    <option value="choose2">선택2</option>
</select>

개인별로 option의 선택값이 여러개가 될수도 있고 하나가 될 수도 있습니다. 이 중 선택값이 '선택하세요'를 제외한 하나만 있을 때 그 하나를 자동으로 선택하려고 합니다.

구현이 불가능하다면 select의 갯수가 2개면 두번째걸 선택하거나, each를 이용해서 찾을 수도 있겠지만 하나의 선택자로만 바로 선택을 해서 찾는 방법이 있는지 궁금합니다.

제가 여기까진 해봤는데

$('#selectid :not([value=""])')

이렇게 하면

<select id="selectid">
    <option>선택하세요</option>
</select>

요렇게 된 것도 찾아버리더라구요... 방법이 없을까요?

1 답변

  • 좋아요

    0

    싫어요
    채택 취소하기

    만약:

    <select id="selectid">
        <option value="">선택하세요</option>
        <option value="choose1">선택1</option>
    </select>
    

    이렇게 되어 있으면 작성하신 selector:

    $('#selectid :not([value=""])')
    

    로 해결이 됩니다만, 예시로 든건

    <select id="selectid">
        <option>선택하세요</option>
        <option value="choose1">선택1</option>
    </select>
    

    이렇게 아예 value 속성이 없는 경우잖아요? 그러니

    $('#selectid [value])')
    

    이렇게 해야 value 속성이 있는 옵션만 선택합니다.

    value 속성이 아예 없거나, 있어도 빈 값인 옵션은 제하고 싶다면 위 예시를 둘 다 적용하면 되겠죠?

    $('#selectid [value]:not([value=""])')
    // 아래와 같음
    $('select#selectid').find('option[value]').not('option[value=""]')
    
    • 답변 감사드립니다! 문용휘 2019.6.2 18:14

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)