2017-01-30 39 views
1

의 I가 다음 코드를JS :합니다 (.html 중에서 가져 오기)를 선택하여 DataList 옵션

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <!-- add jquery --> 

CITY<br> 
<input id='cities' type="text" list="list_items"> 
<datalist id="list_items"> 
    <option value='Kent'>WA</option> <!-- PLEASE NOTE THAT THERE ARE REPEATING CITY NAMES --> 
    <option value='Kent'>DE</option> 
    <option value='New York City'>NY</option> <!-- AND REPEATING STATE NAMES --> 
    <option value='Liverpool'>NY</option> 
    <option value='Brentford'>SD</option> 
</datalist> 
<br><br> 

STATE<br> 
<input id='states' type="text" disabled> 

<script> 
    $('#cities').on('change', function(val) { 
    $('#states').val(val.html()) 
    }) 
</script> 

https://jsfiddle.net/pxcc1vn4/3/

내가이 datalist에서 항목을 선택할 수 있도록 그것을 만들려고 노력하고 있고 선택한 값이 datalistoption이고 첫 번째가 input이고 .html()datalistoption이고 두 번째는 input입니다.

답변

1

당신은 사용해야하는 첫 번째 목록을 형성이 instead.Select 값을 시도하고 두 번째

$('#cities').on('change', function(event) { 
     $("#states").val(event.target.value); 
    }) 

Check this fiddle

+0

을하고있다

$(document).on("input", "#cities", function(){ var val = this.value; if($('#list_items').find('option').filter(function(){ return this.value.toUpperCase() === val.toUpperCase(); }).length) { //send ajax request $("#states").val(this.value); $("#secondinput").val($("#list_items option[value='"+this.value+"']").text()); } }); 

그것은 작동하지 않는 것 같습니다. https://jsfiddle.net/pxcc1vn4/10/ – MakPo

+0

선택한 후 입력을 클릭하려고 시도한 적이 있습니까? 변경 이벤트는 그 후에 만 ​​트리거됩니다. –

+0

@ XYZ No.그것은 단지 주 대신에 도시 이름을 반환하는 것입니다. – MakPo

0

을에 그 설정 val.currentTarget.value

$('#cities').on('change', function(val) { 
 
    debugger; 
 
    \t \t 
 
    var selectedValue = $("#list_items").find("option[value='"+val.currentTarget.value+"']").prop('outerHTML'); 
 
$('#states').val(selectedValue); 
 
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <!-- add jquery --> 
 

 
CITY<br> 
 
<input id='cities' type="text" list="list_items"> 
 
<datalist id="list_items"> 
 
    <option value='Kent WA'>WA</option> 
 
    <option value='Kent DE'>DE</option> 
 
    <option value='New York City'>NY</option> 
 
    <option value='Liverpool'>NY</option> 
 
    <option value='Brentford'>SD</option> 
 
</datalist> 
 
<br><br> 
 
STATE<br> 
 
<input id='states' type="text" >

+0

이것은 작동하지 않습니다. 도시 이름 만 반환합니다. – MakPo

+0

@MakPo 나는 나의 대답을 udpated했다. 당신을 위해 일할 것인가를 확인해 보라. 나는 전체 HTML이 아닌 단지 선택된 가치가 있다고 생각했다. – Curiousdev

+0

그것은 작동하지 않는다. 요점은, 나는 도시 이름이 중복 될 수 있기를 바란다. 이 작은 코드에는 반복되는 도시 이름이 몇 개 있지만 실제 코드에는 수백 개의 도시가 있으며 많은 도시가 반복됩니다. – MakPo

1

T 그의 트릭을 할 것입니다.

$('#cities').on('change', function() { 
    $('#states').val($(this).text()) 
}) 

http://api.jquery.com/html/http://api.jquery.com/val/

+0

이것은 작동하지 않습니다. 도시 이름 만 반환합니다. – MakPo

+0

내 잘못하면 $ (this) .val()을 .text()로 바꿀 수 있습니다. –

+0

여전히 작동하지 않습니다. – MakPo

0

봐이 https://jsfiddle.net/pxcc1vn4/12/

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <!-- add jquery --> 

CITY<br> 
<input id='cities' type="text" list="list_items"> 
<datalist id="list_items"> 
    <option value='Kent In WA'>WA</option> 
    <option value='Kent In DE'>DE</option> 
    <option value='New York City'>NY</option> 
    <option value='Liverpool'>NY</option> 
    <option value='Brentford'>SD</option> 



주 0123에서 두 가지 옵션

에 대해 동일한 값을 사용하지 마십시오

$('#cities').on('change', function(event) { 

    $('#states').val($('option[value="'+$(this).val()+'"]').html()) 
}) 
+0

중복되는 도시 이름이 있기를 원합니다. 이 작은 코드에는 반복되는 도시 이름이 몇 개 있지만 실제 코드에는 수백 개의 도시가 있으며 많은 도시가 반복됩니다. – MakPo

0

이 조각을 시도,

HTML 코드 :

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script> <!-- add jquery --> 

CITY<br> 
<input id='cities' type="text" list="list_items"> 
<datalist id="list_items"> 
    <option value='Kent'>WA</option> 
    <option value='Kent'>DE</option> 
    <option value='New York City'>NY</option> 
    <option value='Liverpool'>NY</option> 
    <option value='Brentford'>SD</option> 
</datalist> 
<br><br> 
STATE<br> 
<input id='states' type="text" disabled> 

JS CODE : 여기

$(document).on("input", "#cities", function(){ 
    var val = this.value; 

    if($('#list_items').find('option').filter(function(){ 
     return this.value.toUpperCase() === val.toUpperCase();   
    }).length) { 
     //send ajax request 
     $("#states").val(this.value); 
    } 
}); 

그리고 jsfiddle

을하고있다

편집

HTML 코드 :

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script> <!-- add jquery --> 

CITY<br> 
<input id='cities' type="text" list="list_items"> 
<datalist id="list_items"> 
    <option value='Kent'>WA</option> 
    <option value='Kent'>DE</option> 
    <option value='New York City'>NY</option> 
    <option value='Liverpool'>NY</option> 
    <option value='Brentford'>SD</option> 
</datalist> 
<br><br> 
STATE<br> 
<input id='states' type="text" disabled> 
<input id='secondinput' type="text" disabled> 

JS 코드 :이 jsfiddle

+0

이것은 단지 주 대신 도시의 이름을 반환합니다. – MakPo

+0

대답 편집 부분을 확인하십시오. – rahulsm

+0

'켄트' 'DE'를 선택하십시오. 결과는 '와이드'입니다. 그것은 'WA'와 'DE'를 연결합니다. – MakPo