如何在输入下从数据列表中选择一个选项后立即触发功能
how to trigger function right after select a option from datalist under a input?
例如,我有以下输入和数据列表。从下拉列表中选择选项"a"后,如何触发功能?
当前的方式只有在焦点从输入中移除后才能工作。我想要的是,点击该选项后,它会触发另一个函数,比如触发javascript函数?
我试过"onchange"answers"onclick",它必须去掉焦点。我希望在选择选项后触发该操作。
<input id="endpointsInput_1" name="endpointsname_1" list="endpointsname_1" class="form-control" type="text" style="display:inline-block;width:100%;" onclick="getJsonRequest(1);"/>
<datalist id="endpointsname_1">
<option value="a">a</option>
<option value="b">b</option>
<option value="folders/delete">folders/delete</option>
<option value="c">c</option>
</datalist>
我的剧本如下。
<script type="text/javascript">
function getJsonRequest(i){
$("input[name=endpointsname_"+i+"]").change(function () {
alert($(this).val());}
试试这个伙伴
document.getElementById('endpointsInput_1').addEventListener('input', function () {
console.log('changed');
});
Fiddle
我发现了一种很好的方法,可以只在从数据列表中选择一个选项时触发函数,而不影响手动输入——使用keyup
事件,它在桌面和移动设备上都能完美工作当选择数据列表选项时,事件监听器会将其视为按下了一个没有keyCode
的键——事件对象只是缺少keyCode
属性(我在使用console.log检查keyup事件时意外注意到了这一点(
function blurInputOnDatalistChoice(e) {
if (!e.keyCode) { // OR: if (e.keyCode === undefined)
e.target.blur();
e.target.setAttribute('style', 'background-color:yellow');
setTimeout(() => e.target.removeAttribute('style'), 1500);
}
}
<h1>Demo</h1>
<input onkeyup="blurInputOnDatalistChoice(event)" list="cars"></input>
<datalist id="cars">
<option value="Audi">
<option value="BMW">
<option value="Volkswagen">
</datalist>
UPD:数据列表选项也可以通过以下方式检测:在这种情况下生成的事件只是Event
的一个实例,而不是KeyboardEvent
的一个例子,就像按下实际键一样。因此,备选检查是:if (!(e instanceof KeyboardEvent)) { }
。
此外,为了这个目的,有可能不监听keyup
事件,而是监听input
事件:在这种情况下,dataList中的选择也将触发";不寻常的";不是InputEvent
实例的事件,而且与典型的输入事件不同,这些事件缺少inputType
属性。
相关文章:
- 按照选项卡索引的顺序循环一个jQuery选择
- 无法在Ionic select中预先选择最后一个选项
- 一次又一次地在新的和相同的选项卡中打开一个url
- 如果类不是一个选项,如何在使用 jQuery 时控制(避免)嵌套 html 元素的样式
- AngularJS ng选项在选择一个选项后删除了默认的空白值
- 如何为下拉列表的每个选项添加一个属性
- 在下拉列表中选择一个选项的值
- PayPal按钮是否有一个简单的选项,其中金额基于一些用户输入
- 创建了一个选项卡,但点击时不会起作用-jQuery issue/newbie
- 如何通过Primefaces3.5使用JSF2.0验证并在成功的情况下打开一个新的选项卡
- HTML-从mysql生成的选择框中的一个选项更改文本区域的颜色
- 打开一个选项卡,并在firefox网络扩展中向其发出POST请求
- 我如何为列出的选项卡元素编写一个Protractor测试,它会检查它是否's是否处于活动状态
- HTML-使用mysql.php生成一个选择框.我怎样才能更改“;值“;生成的选择框选项的
- 给出<选项>标记一个类?API调用不工作
- 链接到手风琴中的另一个选项卡,嵌入的链接将不起作用
- 如何将数组附加到下拉导航栏并禁用其中的一个选项
- 如何打开一个新窗口或选项卡,并将其提供给javascript执行
- 尝试添加一个选项以使用append进行选择,但没有任何结果
- 多个选择选项一个依赖于另一个