2017-03-02 1 views
0

입력 태그에 대해 자동 완성 기능을 구현할 필요가 없습니다.jQuery DataList 태그에 중첩 선택 - 선택한 항목을 가져올 수 없습니다.

입력을 시작하면 드롭 다운 목록이 표시되고 항목 중 하나를 선택합니다. 선택한 항목에 도달하려고 할 때 선택한 옵션 대신 옵션 목록에서 첫 번째 옵션을 얻습니다.

<input id="chosenTxt" list="someList"> 
    <datalist id="someList"> 
    <select id="selectList"> 
     <option value="First" label="one" /> 
     <option value="Second" label="two" /> 
     <option value="Third" label="three" /> 
    </select> 
    </datalist> 
</input> 

그럼 예를 들어 나는 "두 번째"를 선택하고

$("#selectList option:selected").attr("label") 

나는 "일"을 얻을 사용 : 이것은 모습입니다

.

FYI : jQuery UI에 내장되어 있다는 것을 알고 있지만 사용하고 싶지 않습니다.

+0

당신은 당신이 사용합니까 jqueryUI의 자동 완성 느릅 나무 자동 완성을 사용 해달라고하면? –

+0

이미 구현 한 것 –

+0

그 중 하나는 귀하의 질문에 답변하는 방법을 알고 있기 때문입니다. 아니면 바이올린을 만들 수 있습니까? –

답변

0

당신은 입력 value이 옵션 중 하나의 value 동일한 경우 체크, 입력 요소에 input 이벤트를 수신 이상 옵션을 반복해야합니다.

데이터 목록의 options 속성에서 datalist 요소의 옵션에 액세스 할 수 있습니다.

다음은 예입니다.

$('#chosenTxt').on('input', function() { 
 
    $that = $(this); 
 
    $.each($('#someList')[0].options, function(idx, opt) { 
 
    if($that.val() == opt.value) { 
 
     console.log(opt.label) 
 
    } 
 
    }) 
 
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input id="chosenTxt" list="someList"> 
 
<datalist id="someList"> 
 
<select id="selectList"> 
 
    <option value="First" label="one" /> 
 
    <option value="Second" label="two" /> 
 
    <option value="Third" label="three" /> 
 
</select> 
 
</datalist>

+0

그건 작동하지 않습니다. 두 개의 동일한 값을 갖고 라벨이 다른 경우 매번 1을 얻습니다. –