Can HTML5 datalist differentiate value and option text?

倾然丶 夕夏残阳落幕 提交于 2020-02-03 03:31:05

问题


The list attribute / datalist element of HTML5 forms shows a dropdown menu of choices one can pick from, edit, and even type in some text. All this can be achieved at once with a clean and powerful code:

<input list="states">
<datalist id="states">
    <option value="One">
    <option value="Two">
</datalist>

However, how to make such a form send a value which is different from the option text, as in the usual select / option (below)?

<select>
    <option value="1">One</option>
    <option value="2">Two</option>
</select>

回答1:


Seems you can't with pure HTML without using some JS+CSS help.

try this i hope its help you.

html

<input id="datalisttestinput" list="stuff" ></input>
        <datalist id="stuff">
            <option id="3" value="Collin" >
            <option id="5" value="Carl">
            <option id="1" value="Amy" >
            <option id="2" value="Kristal">
        </datalist>

script

function GetValue() {
            var x = $('#datalisttestinput').val();
            var z = $('#stuff');
            var val = $(z).find('option[value="' + x + '"]');
            var endval = val.attr('id');
            alert(endval);
        }

Best Wishes Kumar




回答2:


Below is Kumah's modified answer that uses a hidden field to contain the value which ultimately gets sent to the server.

$('#inputStates').change(function(){
    var c =  $('#inputStates').val();
    $('#inputStates').val(getTextValue());
    $('#statesHidden').val(c);
});

function getTextValue(){
  var val =  $('#inputStates').val();
  var states = $('#states');
  var endVal = $(states).find('option[value="' + val + '"]');
  //depending on your logic, if endVal is empty it means the value wasn't found in the datalist, you can take some action here
  return endVal.text();
}


来源:https://stackoverflow.com/questions/18464479/can-html5-datalist-differentiate-value-and-option-text

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!