2017-01-30 37 views
1

的我有以下代碼:JS:獲取的.html()選擇數據列表選項

<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中,並將所選的datalistoption中的.html()置於第二個input中。

回答

1

試試這個instead.Select值形成的第一個列表,並設置在第二

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

Check this fiddle

+0

這似乎並不奏效。 https://jsfiddle.net/pxcc1vn4/10/ – MakPo

+0

你選擇後是否嘗試點擊輸入?之後只會觸發更改事件。 –

+0

@XYZ號碼它只是返回城市的名稱而不是州。 – 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我已經刪除了我的答案,請檢查它是否適合你我認爲你只需要選定的值而不是整個HTML – Curiousdev

+0

這不工作,重點是,我希望能夠有重複的城市名稱。在這小部分代碼中,只有少數重複的城市名稱,但在我的實際代碼中有數百個城市,其中很多城市正在重複。 – MakPo

1

ŧ他的意志會訣竅。

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

http://api.jquery.com/html/ VS 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> 



STATE 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代碼:

$(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代碼:

$(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()); 
    } 


}); 

這是工作jsfiddle

+0

這只是返回城市的名稱而不是狀態。 – MakPo

+0

檢查我編輯的答案部分 – rahulsm

+0

嘗試選擇'Kent''DE',結果是'WADE'。它連接'WA'和'DE'。 – MakPo