ボタンをクリックして入力要素にフォーカスを当てると、datalist html5 要素のすべてのオプションをユーザーに自動的に表示しようとしています。通常、ユーザーが関連するテキスト入力要素を 2 回クリックすると、すべてのオプションが表示されます。ユーザーが入力を開始する前にすべてのオプションを表示できるように、この動作をプログラムでシミュレートしたいと思います。
$('#text-input').focus();
を使用してフォーカスを取得し(これは機能します)、jqueryを使用して.click()
(1回と2回)、.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);