IE11 编辑值时将光标移动到输入开头

2024-01-08

我在一个项目上遇到了一个非常奇怪的问题。长话短说,我有记录利率的输入字段,因此在模糊时附加%并在焦点时删除%。它在除 IE11 之外的所有浏览器上都能正常工作。由于某种原因,它将光标移动到输入的开头,这对于人们快速浏览并输入值来说很烦人。

这是一个简化的示例:

$('#test').val('default');

$('#test').focus(function() {
    var value = $(this).val().slice(0, -1);
    $(this).val(value);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" id="test" />

同样,这只发生在 IE11 中(在旧版本的 IE 中工作正常)。以前有人遇到过这个问题吗?我尝试在重新分配值后再次强制聚焦,但这并没有解决问题。任何提示表示赞赏。


您可以尝试在附加/删除时手动设置插入符位置%标记,使用这两个函数(这些函数非常通用,如果您需要在其他时间为所有浏览器设置插入符位置,则应该适用于每个浏览器):

function getCaretPosition(element) {
  var caretPos = 0;
  if (element.type === 'text' || element.type === 'tel') {
    if (document.selection) { // IE Support
      element.focus();
      var Sel = document.selection.createRange();
      Sel.moveStart('character', -element.value.length);
      caretPos = Sel.text.length;
    } else if (element.selectionStart || element.selectionStart === '0') {// Firefox support
      caretPos = element.selectionStart;
    }
  }

  return caretPos;
}

function setCaretPosition(element, position) {
  if (element.type === 'text' || element.type === 'tel') {
    if (element.setSelectionRange) {
      element.focus();
      element.setSelectionRange(position, position);
    } else if (element.createTextRange) {
      var range = element.createTextRange();
      range.collapse(true);
      range.moveEnd('character', position);
      range.moveStart('character', position);
      range.select();
    }
  }
}

并且仅在使用 IE11 时调用它们:) 另外,如果您愿意,您可以使这些函数更加具体,删除 FF 的部分:)

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

IE11 编辑值时将光标移动到输入开头 的相关文章

随机推荐

  • 列表中的每个孩子都应该有唯一的“key”道具

    我不断收到此警告 列表中的每个孩子都应该具有唯一的 key 道具 即使我有具有不同键的独特项目 每当我创建一个新的 植物 对象时 我都会给它一个新的 uuid setPlants prevItems gt return name newPl
  • hadoop 集群应该在相同的硬件上运行吗?

    我记得在某处读到过 如果运行 Hadoop 的机器彼此之间差异很大 那么 Hadoop 的性能会显着下降 但我似乎找不到该评论了 我正在考虑在不由我的团队直接管理的虚拟机阵列上运行 Hadoop 集群 我需要知道这是否是我应该在请求中提出的
  • 如何在 Xcode 10 中打开 Xcode 11 Beta 4 项目?

    我在 Xcode 11 Beta 4 中开发了一个项目 然后降级到 Xcode 10 并且无法打开该项目 我想将我的应用程序提交到应用程序商店 但我在 Xcode 11 beta 4 中不断收到错误消息 我是初学者 我知道我篡改了构建设置
  • 在 Unity3D 中,“设置”网格的边界会做什么或实现什么?

    在 Unity 代码库中 我看到了这个 the game object currently has no mesh attached MeshFilter mFilter gameObject AddComponent
  • 我们可以使用 for-each 循环遍历传递给函数的数组吗?

    我知道我们可以通过这种方式迭代作为参数传递的数组 NO ERROR void fun int a int n for int i 0 i
  • 如何在 NetBeans 中显示/显示隐藏或不可见的字符?

    如何在 NetBeans 中显示 显示隐藏字符 在其他编辑器中 如果打开此功能 空格可能会显示为小中心点 制表符可能会显示为右箭头 此功能对于查看文件是否使用制表符或空格进行缩进等很有用 这个功能已经缺失很长一段时间了 功能要求 https
  • Apache Camel 中的忽略消息

    希望这听起来并不荒谬 但我怎样才能丢弃消息在骆驼故意 到目前为止 我将它们发送到日志组件 但同时我什至不想记录提款 有没有 dev 空骆驼的端点 您可以使用消息过滤器 eip 来过滤掉不需要的消息 http camel apache org
  • xml 中的额外右括号

    我使用此示例将一些变量保存到 xml 文件 如何将当前类设置为返回类型结果 https stackoverflow com questions 14639554 how do i set the current class to the r
  • Groupby 总和、索引与列结果

    对于以下数据框 df pd DataFrame group a a b b data 5 10 100 30 columns group data print df group data 0 a 5 1 a 10 2 b 100 3 b 3
  • 如何在 ASP.NET MVC 中的多个视图上正确填充控制器中 ViewData 的下拉列表

    我已经说过这一点大约一百万次了 但我对 ASP Net MVC 以及一般的 ASP NET 仍然是新手 所以很抱歉 如果这有点明显 好的 我有一个控制器将数据发送到两个视图 一个视图仅列出数据库中的数据 而另一个视图允许您分别编辑和添加记录
  • MySQL中如何设计类别和子类别?

    我有一个类别列表以及与每个类别关联的子类别数量 假设类别表称为 Cat 那么其中有热类别和冷类别 我有另一个名为 subcats 的表 然后我有以下内容 Cat ID Name 1 Hot 2 Cold SubCats SubCatID C
  • 计算用户给出的字符串中的唯一字符

    我必须编写一个程序来计算用户给出的字符串中的唯一字符 例如 abc 返回3 aabbccd 返回4 我不允许使用高级Java类 如Map Set等 我只能使用数组 字符串 for循环 while循环 if语句 我正在尝试使用嵌套循环 但对如
  • MQTT 客户端订阅 PostgreSQL 数据库更改

    我有一个定期更新的 PostgreSQL 数据库 并且想要将最新更改发布到 mosquitto 代理 执行此方法最优雅的方法是什么 好吧 这个想法很有趣 我正在使用 PostgreSQL 9 5 如果我在控制台中输入 CREATE LANG
  • 如何删除 NodeReference 字段中的节点 ID [nid:n]

    这是此链接的同一问题 删除节点引用自动完成中的 nid n https stackoverflow com questions 1515722 removing nidn in nodereference autocomplete 根据第一
  • 一个变量仅由一个线程读取,由另一个线程读取和写入,是否需要同步?

    Motive 我刚刚学习多线程的基础知识 还没有完成它们 但我想在学习之旅的早期提出一个问题 以引导我了解与我正在从事的项目最相关的主题 Main A 如果一个进程有两个线程 一个编辑一组变量 另一个只读取所述变量 从不编辑它们的值 那么我
  • azure 删除从我的应用程序服务返回的 Access-Control-Allow-Origin 标头

    我有两个服务在 Azure 上运行 a 网络服务 角度应用程序 expressjs an 应用服务 ASPNET核心应用程序 All the 网络服务所做的是查询应用服务对于以下端点 my app service azurewebsites
  • 将初始音量设置为手机铃声音量

    我试图做到这一点 以便当用户打开应用程序时 它将音乐的音量设置为手机铃声的音量 到目前为止 这是我的代码 但我不太确定 setVolume float float 上的参数是什么 android 文档没有很好地解释它 我的代码在这里做错了什
  • texture2D().r 和texture2D().a 是什么意思?

    我在用OpenGL ES在Android编程中 当我在着色器中将YUV NV21 转换为RGB时 例如 vec3 yuv vec3 texture2D u TextureY vTextureCoord r 0 0625 texture2D
  • 我们如何使用 ucrop 库自定义裁剪图像活动

    我正在使用一个 implementation com github yalantis ucrop 2 2 2 用于裁剪目的的库 谁能告诉我们如何编辑上面的设计 我们可以为此进行定制设计 UI 吗 因为上面的UI是从图库中选择图片时默认的 l
  • IE11 编辑值时将光标移动到输入开头

    我在一个项目上遇到了一个非常奇怪的问题 长话短说 我有记录利率的输入字段 因此在模糊时附加 并在焦点时删除 它在除 IE11 之外的所有浏览器上都能正常工作 由于某种原因 它将光标移动到输入的开头 这对于人们快速浏览并输入值来说很烦人 这是