javascript - 在 Javascript 中轮询输入字段

标签 javascript jquery html css

我正在自学 JQuery,作为练习,我正在创建一个页面,用户在其中的输入字段中输入文本,该字符串的所有实例都会在页面正文中找到并突出显示。我已经能够在用户单击按钮时实现此功能,但我想让它做的是不断轮询输入字段并突出显示字符串。

进行连续轮询似乎会使页面崩溃。

$(document).ready(function(){

     while(1==1){

         var str = document.input.str.value;

          $(function(){
               $('p:contains('+str+')').each(function(){
                     var regex = new RegExp(str, "g");

                      $(this).html( $(this).html().replace( regex ,"<span class='hlt'>"+str+"</span>")); 
                });
            });
    }
});

网站似乎一直都有这种功能,所以我确信它是可行的,但我似乎找不到任何关于它的信息。

非常感谢!

最佳答案

这会使您的页面无响应的原因是 JavaScript 通常与 UI 在同一线程上运行。也就是说,如果你的 JavaScript 正在运行,页面的其余部分将没有响应。你真正想做的是以下之一:

  • 使用 blur 事件(当输入框失去焦点时触发)
  • 使用change事件
  • 使用 keyup/keydown 事件
  • 使用 setTimeout 或 setInterval 以非阻塞方式轮询输入框

如果你想观察输入框可能发生的每一个变化,我建议观察键盘事件。

$(document).ready(function(){
    $('#inputID').keyup(function(){
        $('p:contains('+str+')').each(function(){
                 var regex = new RegExp(str, "g");
                 $(this).html( $(this).html().replace( regex ,"<span class='hlt'>"+str+"</span>")); 
        });
    });
});

如果您想要轮询方法:

$(document).ready(function(){
    var intervalID = setInterval(function(){
        //execute logic here
    }, 100); // 100 ms check
});

关于javascript - 在 Javascript 中轮询输入字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6588545/

相关文章:

javascript - 如何将窗口的Y中心设置为元素的Y中心?

javascript - 确保脚本标签作为正文中的第一个标签包含在内?

javascript - 以编程方式设置剑道网格的下一行

html - "&#160;"是 "&nbsp;"的替代品吗?

javascript - 图标干扰按钮点击事件

javascript - 注入(inject)脚本错误 : Script returned non-structured-clonable data on Firefox extension

javascript - 从多维对象数组中查找 ID

鼠标悬停时显示 JQuery UI 自动完成功能

javascript - 将值添加到同一变量循环 jQuery

PHP DOMPDF 在我的数据库中显示表