Javascript 如何检查文本是否高亮显示(跨浏览器)

Javascript 如何检查文本是否高亮显示(跨浏览器),javascript,jquery,regex,Javascript,Jquery,Regex,在jQuery或JavaScript(大多数跨浏览器兼容)中是否有一种通用方法来检查文本是否高亮显示 我正在使用HTML元素。这是一个搜索框,允许在搜索项目时使用特定格式 用户可以输入以下内容: 项目名称、位置、描述和其他字母数字输入 项目编号(全部数字) 在keydown上,我正在筛选各种搜索格式。按照目前的情况,如果输入了10个字符,并且它们都是数字,输入文本框只允许输入更多非数字字符。原因是,我们的项目编号是10位数,如果用户正在搜索项目编号,我们只希望捕获前10个字符,而忽略其余字符 我

在jQuery或JavaScript(大多数跨浏览器兼容)中是否有一种通用方法来检查文本是否高亮显示

我正在使用HTML
元素。这是一个搜索框,允许在搜索项目时使用特定格式

用户可以输入以下内容:

  • 项目名称、位置、描述和其他字母数字输入
  • 项目编号(全部数字)
  • keydown上,我正在筛选各种搜索格式。按照目前的情况,如果输入了10个字符,并且它们都是数字,
    输入
    文本框只允许输入更多非数字字符。原因是,我们的项目编号是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;
      }
    }
    
    if($input.val().length==10&&!isNaN($input.val().replace(“”,#')){
    
    如果((e.which>=48&&e.which=96&&e.which您可以使用
    选择
    对象:

    var selection = window.getSelection();
    
    请参阅此处的文档:

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

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

    根据以上答案,这里是普通版

    document.addEventListener('click', function(){
        if (window.getSelection().anchorNode.parentElement.classList.contains('word')) {
        console.log('highlight');
        }
    });
    

    我会将“document”更改为包装容器,将“word”更改为文本上要检测突出显示的任何类/ID。

    谢谢!效果非常好