当存在 html 5 占位符属性时,在 Internet Explorer 中的字段焦点上触发 jQuery UI 自动完成

2023-12-22

HTML:

<input type="text" name="item" value="" id="item" class="input-xlarge" placeholder="Enter item name or scan barcode" accesskey="i"  />

JavaScript:

    $( "#item" ).autocomplete({
        source: '<?php echo site_url("sales/item_search"); ?>',
        delay: 10,
        autoFocus: false,
        minLength: 0,
        select: function(event, ui)
        {
            event.preventDefault();
            $( "#item" ).val(ui.item.value);
            $('#add_item_form').ajaxSubmit({target: "#register_container", beforeSubmit: salesBeforeSubmit, success: itemScannedSuccess});
        }
    });

setTimeout(function(){$('#item').focus();}, 10);

当页面在 Internet Explorer 中加载时,自动完成会出现空术语值,从而产生一堆结果。如果我删除占位符属性,它会按预期运行,并且在键入之前不会发出请求。

如果我删除焦点事件,它也可以在 Internet Explorer 中运行。但我需要将焦点放在页面加载上,所以这并不是一个真正的选项。我还想保留占位符文本。

该元素在 safari、firefox 和 chrome 中按预期运行(在输入之前没有请求)。

这是一个错误吗?有没有解决方法可以使用占位符属性?

我整理了两个例子;损坏并修复。两者之间的唯一区别是占位符属性的存在(在损坏的版本中)。

损坏的浏览器仅在 IE 中损坏,并在其他浏览器中按预期运行。

注意:我所说的“损坏”是指当专注于字段时,自动完成功能会在不应该激活的情况下被激活。

http://blastohosting.com/jquery_ui_autocomplete_bug/broken.html http://blastohosting.com/jquery_ui_autocomplete_bug/broken.html

http://blastohosting.com/jquery_ui_autocomplete_bug/working.html http://blastohosting.com/jquery_ui_autocomplete_bug/working.html

注意:在这两个示例中,ajax 将始终得到相同的结果。请忽略这一点。


这里的问题是 Internet Explorer 处理输入事件的方式。 自动完成菜单在输入元素(标签)的输入事件上触发。https://github.com/jquery/jquery-ui/blob/master/ui/jquery.ui.autocomplete.js https://github.com/jquery/jquery-ui/blob/master/ui/jquery.ui.autocomplete.js167号线

如果您将此代码放在 setTimeout 之前

document.getElementById('tags').addEventListener('input',function(ev){alert(ev.target.value);},false);

您将看到 ie 的本机输入事件在元素焦点上触发。 这在 Chrome 上不会发生。所以这可能不是 jquery 的错误,而是 ie 的一个功能。正如您在问题中所述,只有当输入元素具有占位符属性时才会发生这种情况,如果没有该属性,输入事件不会在焦点上触发。

我尝试添加一个one焦点调用的事件处理程序preventDefault()在触发焦点之前,但这仍然导致输入事件触发。

autofocus html5 属性仍然导致输入事件触发。

我尝试将您的代码包装在正确的 html/head/body 中,但这没有效果

最后,作为解决方法

1)我将 minLength 属性默认为 1

minLength: 1

2)在setTimeout中,我将minLength选项设置为0

$("#tags").focus().autocomplete("minLength", 0);

这似乎适用于 ie 9。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

当存在 html 5 占位符属性时,在 Internet Explorer 中的字段焦点上触发 jQuery UI 自动完成 的相关文章

  • 由于固定导航,增加了 FancyBox v2 的顶部和底部边距

    我目前正在开发一个网站 该网站将来将具有响应能力 该网站主要由图像组成 单击这些图像会加载到 FancyBox 中 FancyBox v2 现在具有响应能力 因此可以在屏幕尺寸发生变化时重新调整图像等的大小 作为我设计的一部分 我有两个固定
  • 使用 jquery 在菜单中突出显示当前 url

    我有一个菜单 但我想突出显示当前与 jquery 的链接 var loc window location var lochref topNavigation li a attr href if lochref loc topNavigati
  • 暂时禁用提交按钮

    我有一个将大文件上传到服务器的表单 像这样的事情
  • 使用 jquery 显示/隐藏特定类的内容

    我是 jquery 的新手 也许这是一个愚蠢的问题 但我几乎到处都在寻找答案 但没有找到 那么 我们开始吧 我想根据我在下拉表单中选择的选项来显示不同的内容 正如我在 StackOverflow 上了解到的 您可以使用更改函数来执行此操作
  • 如何在响应ajax codeigniter后停止执行其他控制器

    我想知道如何在响应输出 json 数据后停止执行函数和涉及的其他控制器 就我这里的情况而言 我只是打电话test 函数于dashboard控制器 In dashboard构造函数将执行MY Login library In MY Login
  • 选择变量的嵌套元素 - jQuery

    我希望将变量传递给函数并让函数选择该变量中的元素 我不熟悉这种情况的语法 但是有人可以建议吗 例如 当在容器内单击按钮时 我希望将该容器存储在变量中 好吧 我有那部分 但后来我希望选择该容器中的某个元素 例如 container div e
  • 简单模式对话框中链接的 Tab 键顺序

    我正在使用优秀的 jquery simplemodal 对话框插件来显示项目列表 这些项目包含超链接 除了模式对话框中的链接不会作为选项卡顺序的一部分出现之外 一切都很好 我尝试显式设置 tabindex 但由于某种原因 只有输入元素按 T
  • 了解设置 JQuery 变量

    了解设置 JQuery 变量 最近 我通过在 StackOverflow 上遇到的另一个问题寻找帮助 了解到如何设置 JQuery 变量 如下所示 您可以通过简单地调用变量来创建输入字段 并且锚变量似乎也定义了样式 var clicked
  • jqgrid删除:没有获取值

    我使用 JSP 和 Servlet IDE Eclipse 数据库 Oracle10 开发 Web 应用程序 我在用JQGRID以表格格式显示数据 我还想要添加 编辑 删除的功能JQGRID 到目前为止我已经完成了编辑功能 现在我想要Del
  • 删除某个类之后的所有类

    我有一个 lt div id thisdiv class class1 class2 class3 class4 class5 gt text lt div gt 我需要能够使用 jQuery 删除 class3 之后的所有类 就像是 th
  • jQuery 可以在用户输入数字时添加逗号吗?

    当用户输入数字时 如何动态添加逗号 有没有一个好的数字格式化程序可以提供帮助 我必须稍后添加这些数字 所以我最终必须删除一行中的逗号 但屏幕需要显示逗号以提高可读性 运行代码片段以查看其工作情况 input number keyup fun
  • 文件上传控件 OnChange 事件 JQuery

    我正在尝试使用 AJAX JQUERY 和 Net HTTPHandler 构建页面来上传文件 如下所示http dotnet dzone com news async file upload jquery and http dotnet
  • 如何以编程方式处理 JqGrid 事件?

    我正在使用JqG rid 的 ASP NET 包装器 http www trirand net demoaspnet aspx 我想以编程方式连接一些网格的处理程序events http www trirand com jqgridwiki
  • jQuery Mobile 表单验证

    我有一个移动网站 除了验证之外一切都工作正常 基本上我希望从用户那里获取值 然后在单独的页面 process php 上处理它们 但是 在这样做之前 我需要检查以确保字段已填充 我已经研究了几种方法来做到这一点 但似乎没有一种有效 我现在有
  • 动态地将工具提示文本设置为 div 元素

    我正在尝试动态地将工具提示文本设置为容器 div 并对我刚刚添加到有序列表的每个 div 元素 elem Alias Status 使用 jQuery function addNewElement elem var li li li li
  • 如何在jquery中以相反的顺序迭代元素? [复制]

    这个问题在这里已经有答案了 我是jquery的新手 我想知道如何使用each 在jquery中以相反的顺序迭代表单元素 任何帮助 将不胜感激 尝试这个 input get reverse each function
  • JQuery 图像上传不适用于未来的活动

    我希望我的用户可以通过帖子上传图像 因此 每个回复表单都有一个上传表单 用户可以通过单击上传按钮上传图像 然后单击提交来提交帖子 现在我的上传表单可以上传第一个回复的图像 但第二个回复的上传不起作用 我的提交过程 Ajax 在 php 提交
  • 为什么 jquery 没有检测到单选按钮未被选中的情况? [复制]

    这个问题在这里已经有答案了 可能的重复 JQuery radioButton change 在取消选择期间不会触发 https stackoverflow com questions 5176803 jquery radiobutton c
  • 长轮询会冻结浏览器并阻止其他 ajax 请求

    我正在尝试在我的中实现长轮询Spring MVC Web 应用程序 http static springsource org spring docs 2 0 x reference mvc html但在 4 5 个连续 AJAX 请求后它会
  • 使用 Ajax 请求作为源数据的 Jquery 自动完成搜索

    我想做的事 我想使用 jquery 自动完成函数创建一个输入文本字段 该函数从跨域curl 请求获取源数据 结果应该与此示例完全相同 CSS 在这里并不重要 http abload de img jquerydblf5 png http a

随机推荐