Мой список создается через php:
<input name="txt_name" list="emp_names" autocomplete="off" id="txt_name" class="textbox" onchange="getID(emp_names.text);"/> <datalist id="emp_names"> <?php $host = "localhost"; $user = "root"; $pass = "mark"; $db = "payrolldb"; $cons = mysql_connect($host,$user,$pass); mysql_select_db($db,$cons); //query start $query = "SELECT ID_Employee, CONCAT(LastName,', ',FirstName) AS Name, Department FROM tbl_employeeInfo;"; $result = mysql_query($query); while ($row = mysql_fetch_array($result)) { echo "<option value='".$row['Name']."'>".$row['ID_Employee']."</option>\n"; } ?> </datalist>
И это проявляется именно так.
Каждый из вариантов имеет текстовое значение, которое составляет «15» от изображения. значение самой опции – «Mehta, Jack»
Я хотел знать, как получить текстовое значение и передать его из функции javascript.
Я попытался использовать метод onchange как для ввода, так и для тега datalist.
Но он говорит, что не может готовый текст свойства «undefined».
Пытаться:
// get the input element and attach event listener to it document.getElementById("txt_name").addEventListener("keyup", function (event) { if (event.which === 13) { // if enter/return key is pressed alert(this.value); // get the value } }, false);
Прямой способ получить datalist option text
в javascript
Вы можете добавить еще один id
атрибута и поместить туда это текстовое значение и получить результат, как показано ниже.
HTML
<input list="emp_names" id="txt_name"> <datalist id="emp_names"> <option value="Mehta, Jack1" id="15">15</option> <option value="Mehta, Jack2" id="16">16</option> <option value="Mehta, Jack3" id="17">17</option> <option value="Mehta, Jack4" id="18">18</option> <option value="Mehta, Jack5" id="19">19</option> </datalist> <input type="button" onclick="alertTheSelectedValue()" value="submit">
JS
var alertTheSelectedValue = function() { var val = document.getElementById('txt_name').value; var text = $('#emp_names').find('option[value="' + val + '"]').attr('id'); alert(text); }
Это лучший способ, который я нашел для этого, используя JQuery
var selection = $("#txt_name").val(); var text = $("#emp_names option").filter(function () { return this.value == selection; }).text();
Вы должны поместить функцию в oninput-событие входа NOT datalist. Это будет срабатывать, как только вы выберете выделение. если вы используете событие onchange, оно будет срабатывать только после того, как вы потеряете фокус или размытие () произойдет.