2017-01-30 61 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