使用 jquery 用 包裹某些单词

2023-11-23

我有以下内容div:

<div id="query" style="width:500px; height:200px;border:1px solid black"
 spellcheck="false" contenteditable="true"></div>​

where Clients can write their SQL queries. What I was trying to do is wrap words the client enters right after hitting Space with a span and give this span a certain class according to the word typed:

example

如果客户端输入select我需要将这个选择的单词像这样包装在 div 中:

<span class='select'> SELECT </span> <span> emp_name </span>

CSS

.select{color:blue ;text-transform:uppercase;}

这是非常相似的东西jsFiddle做。我怎样才能做到这一点?

这是我到目前为止所尝试过的:jsFiddle

$(function(){
    $('div').focus() ;
    $('div').keyup(function(e){
        //console.log(e.keyCode) ;
        if(e.keyCode == 32){
            var txt = $('div').text() ;
            var x = 'SELECT' ;
            $('div:contains("'+x+'")').wrap("<span style='color:blue ;
      text-transform:uppercase;'>") ;
            if(txt == 'SELECT'){
                console.log('found') ; // why This Doesn't do any thing  ?
            }

        }
    });

});

我做了一个概念验证,并对您最初的内容进行了一些修改。见下文,

DEMO: http://jsfiddle.net/cgy69/

$(function() {
    $('div').focus();
    var x = ['SELECT', 'WHERE', 'FROM'];
    $('div').keyup(function(e) {
        //console.log(e.keyCode) ;
        if (e.keyCode == 32) {

            //using .text() remove prev span inserts
            var text = $.trim($(this).text()).split(' ');            
            $.each(text, function(i, v) {
                $.each(x, function(j, xv) {
                    if (v.toUpperCase() === xv) {
                        text[i] = '<span style="color: blue; text-transform: uppercase;">' + v + '</span>';    
                    }                                        
                });
            });

            $(this).html(text.join(' ') + '&nbsp;');

            setEndOfContenteditable(this);
        }
    });

    function setEndOfContenteditable(contentEditableElement) {
        var range, selection;
        if (document.createRange) //Firefox, Chrome, Opera, Safari, IE 9+
        {
            range = document.createRange(); //Create a range (a range is a like the selection but invisible)
            range.selectNodeContents(contentEditableElement); //Select the entire contents of the element with the range
            range.collapse(false); //collapse the range to the end point. false means collapse to end rather than the start
            selection = window.getSelection(); //get the selection object (allows you to change selection)
            selection.removeAllRanges(); //remove any selections already made
            selection.addRange(range); //make the range you have just created the visible selection
        }
        else if (document.selection) //IE 8 and lower
        {
            range = document.body.createTextRange(); //Create a range (a range is a like the selection but invisible)
            range.moveToElementText(contentEditableElement); //Select the entire contents of the element with the range
            range.collapse(false); //collapse the range to the end point. false means collapse to end rather than the start
            range.select(); //Select the range (make it the visible selection
        }
    }
});

你将进一步扩展它来处理

  1. Backspace
  2. HTML contents from previous inserts
  3. Cursor position Partially done, editing in the middle would still mess up the caret.

和更多..

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

使用 jquery 用 包裹某些单词 的相关文章

随机推荐

  • openCSV 没有读取我的整个文件

    我有一个 Java 应用程序 我正在使用 openCSV 来读取文件 非常大 然后 我将第四列 如果有影响的话 最终会添加一列或两列 放入 HashSet 中 并将其输出到一个新文件中 这一切似乎工作正常 但我发现它只读取文件的一部分 27
  • 如何使用唯一复合键

    我有一张桌子 Item ItemName ItemSize Price Notes 我正在制作 ItemName ItemSize 的复合键来唯一标识项目 现在 在阅读了 stackoverflow 上建议使用 UNIQUE 的一些答案后
  • 我什么时候会选择 AesCryptoServiceProvider 而不是 AesManaged 或 RijndaelManaged?

    我认为区别因素是 AesCryptoServiceProvider 符合 FIPS 标准 AesManaged 是跨平台的 需要 NET 3 0 RijndaelManaged 在 NET 2 0 上运行 需要限制块大小 是这样吗 Aes托
  • 字段值必须唯一,除非为 NULL

    我正在使用 SQL Server 2005 我有一个必须包含唯一值或 NULL 值的字段 我认为我应该用以下任一方式强制执行此操作CHECK CONSTRAINT or a TRIGGER for INSERT UPDATE 与触发器相比
  • 无法验证 iOS 应用程序(已拥有有效证书)

    当切换到 Yosemite 时 我对 Mac 进行了全新安装 但现在将 iOS 提交到商店时遇到问题 当我验证我的存档时 我不断收到 您的帐户已经拥有有效的 iOS 分发证书 我已尝试从会员中心重命名并重新下载我的证书 但这不起作用 一个非
  • 为什么 (list 'quote 'x) 计算结果为 'x 而不是 ('x) 或 (quote 'x)?

    我正在尝试学习 LISP 并正在查看一个代码示例 其中使用了类似于以下代码的内容 列出 引文 5 这在 REPL 中评估为 5 我预计它的评估结果为 5 或 quote 5 我正在 CLISP REPL 中尝试这个 任何帮助 将不胜感激 读
  • 获取 CheckBoxList 项目值

    我有一个用数据填充的 CheckBoxList 当我尝试从列表中检索已检查的项目时 我只能获取项目序号 而无法获取该值 我读过您可以使用 Items i Value 但是当我尝试这样做时 我收到一条错误 指出没有扩展方法 值 这是我用来尝试
  • 在 Prolog 中更快地实现口头算术

    我已经做了一个工作概括口头算术Prolog 中的求解器 但速度太慢 仅运行简单的表达式 S EN D M O R E M O N E Y 就需要 8 分钟 有人可以帮助我让它运行得更快吗 verbalArithmetic List Word
  • 为什么对 EventHandler 没有约束?

    我只是偶然发现 当编译一些我认为不会编译的东西时 EventHandler 是not限制为 System EventArgs 类型 这是内联文档 region Assembly mscorlib dll v4 0 0 0 C Program
  • “gnu-zero-variadic-macro-arguments”可以安全地忽略吗?

    考虑下面的代码 活生生的例子 define TEST VA mX TEST define STRINGIFY IMPL mX mX define STRINGIFY mX STRINGIFY IMPL mX include
  • 哪些 svg 元素可以是子元素,哪些不能是

    在html中我们说 内联元素应该在块元素内 同样 我可以使用任何规则来找出哪些 svg 元素可以是子元素 哪些不能是 可以包含图形子级的容器是容器元素 容器元素 可以将图形元素和其他容器元素作为子元素 具体来说 a defs glyph g
  • 实现 C++14 make_integer_sequence

    我尝试实施C 14别名模板make integer sequence 这简化了类模板的创建integer sequence template lt class T T I gt struct integer sequence typedef
  • iOS:使用 Block 而不是 CABasicAnimation 实现完整的 360 度旋转

    这应该是非常简单的事情 但我还没有成功地使用块来使其工作 对此有一些问题和答案 但我发现的所有问题都可以通过使用来解决CABasicAnimation而不是由UIView基于块的动画 这就是我所追求的 以下代码不起作用 基于块 没有动画 C
  • 如何使 Perl 脚本像 Windows 上的普通程序一样运行?

    我希望我的 Perl 脚本的行为就像任何其他可执行文件 exe 文件 一样 当我双击myscript pl我希望它执行而不是在文本编辑器中打开 我想跑myscript pl代替perl myscript pl 我真的很想跑myscript代
  • Qt5 的 GDB 漂亮打印机

    在哪里可以找到 qt5 的 gdb 漂亮打印机 我只能在 kde 开发者网站上找到 qt4 的版本 也许有人知道新版 Qt 是否存在漂亮的打印机以及我在哪里可以找到它们 我知道可以使用最新版本的 QtCreator 但我只需要用于 GDB
  • 需要一种方法来确定文件是否已完成写入

    我所处的情况是这样的 有一个进程正在写入文件 有时该文件相当大 例如 400 500MB 我需要知道什么时候写完 我怎样才能确定这一点 如果我查看目录 我会在那里看到它 但它可能还没有被写入 另外 这需要远程完成 就像在同一个内部 LAN
  • 验证 MSE 损失与验证 MSE 指标不同

    我在 Keras 中编写了一个模型 带有 theano 后端 并像这样编译我的模型 model compile Adam 0 001 loss mse metrics mse mae 即我的目标损失函数是均方误差要报告的指标是均方误差 an
  • 如何使用 FlutterDriver 关闭对话框

    有什么方法可以通过 关闭对话框 轻拍它 即点击内容外部以使用 Flutter Driver 将其关闭 我的问题是该对话框没有任何可以关闭它的按钮 相反 用户应该点击其外部或使用后退按钮 然而 FlutterDriver没有 返回 选项 因此
  • .NET Windows 窗体 DataGridView 单元格文本以编程方式添加时消失

    我正在开发一个 Windows 窗体应用程序 其中包括DataGridView This DataGridView有 3 列 所有列都是简单的文本单元格 Timestamp Connection Message 我遇到的问题是 当我添加一行
  • 使用 jquery 用 包裹某些单词

    我有以下内容div div style width 500px height 200px border 1px solid black div where Clients can write their SQL queries What I