jquery - jQuery .change() 事件在具有自动完成功能的移动设备上不起作用
问题描述
我在文本框中使用 ui-autocomplete。一旦他们选择了一个自动完成下拉菜单并离开该文本框,它就会自动填充所有其他文本字段。所有这些都适用于个人电脑,但不适用于移动网页。我发现它与 ui-autocomplete 插件有关,它不会让移动浏览器接收到更改事件。
我查看了类似的案例,但似乎无法解决问题。我对 jQuery 很陌生
如果我取消注释最后一个插件,将选择更改事件,但自动填充将不起作用。
<script src="https://code.jquery.com/jquery-3.4.1.js"></script>
<script type="text/javascript" src="https://code.jquery.com/ui/1.10.1/jquery-ui.min.js"></script>
<link rel="stylesheet" href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.10.1/themes/base/minified/jquery-ui.min.css" type="text/css" />
<link rel="stylesheet" type="text/css" href="https://ajax.googleapis.com/ajax/libs/jqueryui/1/themes/redmond/jquery-ui.css">
文本框:
<tr><td>Part Name: </td><td><input type="text" name="PartNum" class="auto" id="pn" style="width:250px" required></td></tr>
<script type="text/javascript">
$(function() {
$(".auto").autocomplete({
source: "autocomplete.php",
minLength: 1
});
});
</script>
更改事件
$('#pn').change(function(e) {
e.preventDefault();
myrequest();
});
同样,这在电脑上可以正常工作,但不能在手机上工作。任何帮助表示赞赏。
解决方案
JQueryUI 自动完成有一个 select() 事件,当一个项目被选中时触发。最好使用它,因为 .change() 首先在用户专注于元素时起作用,其次当在输入字段上创建自动完成时,字段本身被替换(并被隐藏)。
这是您将如何实现 select() 事件:
$(function() {
$(".auto").autocomplete({
source: "autocomplete.php",
minLength: 1,
select: function( event, ui ) { myrequest(); }
});
});
您不需要在此处使用 preventdefault。您可以在函数大括号中添加更多代码。
推荐阅读
- javascript - 使用相同的 Javascript 函数将多个项目添加到数组
- replication - 复制与冗余
- java - 解决/处理列表的最佳方式
>> 在 Java 8 中 - python-3.6 - VS代码python调试器忽略断点
- python - 使用我的 API 路由使 Flask Marshmallow NestedSchema 工作
- bash - bash脚本中浮点数的if else条件
- user-interface - 为什么 runAsync 会导致 Java IllegalStateException?
- oracle - 在 SSRS 中执行 Oracle 存储过程时出错:PLS-00306:调用中的参数数量或类型错误
- c# - 为什么我的边距绑定没有更新控件的边距?
- c - 执行不在堆栈上的 shellcode(缓冲区溢出)