javascript - 如何检查文本是否突出显示(跨浏览器)

标签 javascript jquery regex

jQuery 或 JavaScript(大多数跨浏览器兼容)中是否有通用方法来检查文本是否已突出显示?

我正在使用 HTML <input type='text'>元素。这是一个搜索框,在搜索项目时允许使用特定格式。

用户可以输入以下内容:

  1. 项目名称、位置、描述和其他字母数字输入
  2. 项目编号(均为数字)

keydown上,我正在过滤各种搜索格式。按照目前的情况,如果输入了 10 个字符,并且它们都是数字,则 input文本框仅允许输入更多非数字字符。原因是,我们的项目编号长度为 10 位,当用户搜索项目编号时,我们希望只捕获前 10 个字符,而忽略其余的字符。

我的目标是允许用户通过项目编号查找项目,突出显示他们刚刚输入的文本,然后通过项目编号搜索另一个项目(替换现有的搜索文本)。但是,由于我们正在过滤非数字输入,因此不会捕获数字。

以下是我过滤非数字的方法:

if ($input.val().length == 10 && !isNaN($input.val().replace(' ', '#'))) {
  if ((e.which >= 48 && e.which <= 57) || (e.which >= 96 && e.which <= 105)) {
    return false;
  }
}

如何修改此设置以确保如果我的文本突出显示input将允许数字输入来替换现有的查询?

最佳答案

您可以使用Selection对象:

var selection = window.getSelection();

请参阅此处的文档:https://developer.mozilla.org/en-US/docs/Web/API/Selection

使用此对象,您可以检查选定的 dom 节点 (anchorNode)。例如:

if ($(window.getSelection().anchorNode).attr('id') === 'something') { ... }

关于javascript - 如何检查文本是否突出显示(跨浏览器),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24331302/

相关文章:

css - 在 CSS 属性值后强制使用单个空格的高效 RegEx

javascript - Express JS如何将对象推送到子对象数组

javascript - 使用 jQuery on() 将单击事件绑定(bind)到动态加载的实体

javascript - 我如何使用 javascript 在页面上查找和替换匹配的 url

jquery - 使用 Jquery 从 DOM 中删除 div

javascript - 为什么Ajax表单提交两次?

javascript - 使用 javascript 实例化新元素类

javascript - 在单个对象上连续应用两个日期方法?

javascript - 使用javascript匹配来提取字符串的一部分

python - 正则表达式在Python中提取所有单词对及其分别后3个单词和前3个单词