当点击按钮使输入元素成为焦点时,我试图自动向用户显示datalist html5元素的所有选项。通常,当用户单击两次关联的文本输入元素时,将显示所有选项。我想以编程方式模拟此行为,以便用户在开始输入之前可以看到所有选项。
我尝试使用$('#text-input').focus();
(这可行)获得焦点,然后使用jquery .click()
(一次和两次),.dblclick()
,.trigger('click')
来模拟点击次数和双击次数甚至使用jquery.simulate.js。所有这些都会触发$('#text-input').click(function() {...});
,但实际上不会影响浏览器中可见输入元素的状态。
这是我的HTML:
<!DOCTYPE html>
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script>
<script type="text/javascript" src="test.js"></script>
</head>
<body>
<div id="main">
<form>
<datalist id="categories">
<option value="travel">
<option value ="work">
<option value="literature">
<option value="teaching">
</datalist>
<input type="text" list="categories" id="text-input">
<button type="button" id="mic-button">
</button>
</form>
</div>
</body>
</html>
我的代码用dblclick尝试:
(function($) {
$(document).ready(function() {
var textInput = $('#text-input');
textInput.dblclick(function() {
alert('Handler for .dblclick() called.');
});
$('#mic-button').click(function() {
textInput.focus();
// list all the options by tricking the datalist
// to think the user double clicked on it
textInput.dblclick();
});
})(jQuery);
答案 0 :(得分:1)
此功能目前未在规范中定义,尽可能好。
请参阅以下问题,因为它涉及您所描述的同一问题: Programmatically make datalist of input[type=url] appear with JavaScript