轮询Javascript中的输入字段
Polling input field in Javascript
我在自学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
});
假设您的输入字段的id为myid
。然后-
$(document).ready(function()
{
$("#myid").change(function()
{
var str = document.input.str.value;
$('p:contains('+str+')').each(function()
{
var regex = new RegExp(str, "g");
$(this).html( $(this).html().replace( regex ,"<span class='hlt'>"+str+"</span>"));
});
});
});
这意味着,您只需在change
事件处理程序中编写高亮显示代码,而不是轮询更改,如果输入字段中的值发生更改,就会自动触发该事件处理程序。
$(document).ready(function() {
// you can do this with blur event
$("#input_id").blur(function(){
var str = $(this).val();
...
});
// ... or keyup event, but be aware of performance issues
$("#input_id").keyup(function(){
var str = $(this).val();
...
});
});
每当用户在输入中键入内容时,绑定到该事件的函数(keyup或blur(都会被触发。
相关文章:
- 将输入字段中的文本提交到我的数据库,同时将其添加到我的列表中
- 而循环只设置php中输入字段中的第一个值
- 在输入字段中将最小金额设置为
- 如何在输入字段中的按钮的帮助下打开日历,该字段的类型为“=”;日期”;
- 如何在HTML输入字段中添加不可删除的后缀
- 互斥单选按钮和相应的输入字段
- 在IE9中的输入字段中输入焦点最近按钮
- 选中单选框时将属性添加到输入字段
- 当设置addFromAutocompleteOnly时,剩余文本将保留在输入字段中
- 我如何在数字插入中使用逗号,这样它就不会'不要破坏我的输入字段
- 在输入字段上有两个函数调用,一个在Blur上,一个不在Angular中
- 输入字段将't获取更新的值
- 如何选择多个输入字段并删除所需的属性
- 输入字段,只接受0到12之间的数字
- 单击鼠标,用MySQL数据填充html表单输入字段
- 使用jquery将输入字段转换为文本
- Model中的Typeahead返回空值以形成输入字段
- 如何从查询字符串中的输入字段发回文本
- 如何验证日期、月份和日期的3个独立输入字段;年使用jquery或javascript
- 将值传递给jquery创建的输入字段