js 如何控制文本域输入内容在一定间隔时间段才触发事件查询相关数据
文本域自身设置每按一键就触发一次js函数进行查询相关数据,现在要控制按键在一定时间段内(大于1秒间隔时间)才触发一次js函数,比如现在需要输入20110109001.而输...
文本域自身设置每按一键就触发一次js 函数进行查询相关数据,现在要控制按键在一定时间段内(大于1秒间隔时间)才触发一次js 函数,比如现在需要输入20110109001.而输入
200101每按一键时间都在1秒以内,而输入09001每次按键时间亦在1秒钟以内.而输入
200101后隔了一秒多才输入09001,所以在输入20110109001整个过程应该是输入200101后查询了一次数据直到输入完20110109001后又触发了js查询了一次数据,一共触发了两次,而不是每键一键就触发一次查询数据,目的控制不要每次都去查询数据. 展开
200101每按一键时间都在1秒以内,而输入09001每次按键时间亦在1秒钟以内.而输入
200101后隔了一秒多才输入09001,所以在输入20110109001整个过程应该是输入200101后查询了一次数据直到输入完20110109001后又触发了js查询了一次数据,一共触发了两次,而不是每键一键就触发一次查询数据,目的控制不要每次都去查询数据. 展开
3个回答
展开全部
可以用onpropertychange, 这个函数是输入框每键一键就触发,可以在里面判断一下 输入的位数,或规定值,,再提交后台查询。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
为了避免多次查询可以规定输入的字符的长度,20110109001这个字符有11位,那就可以规定输入11位才查询啊,或者用blur方法,都输入完了,离开焦点才查询。
追问
不可以,必须按键就要实现模糊查询功能,但连续按就没有必须去查询,等停下来超过1秒后才进行查询
追答
那就就用onkeyup函数来处理,函数里面进行时间的判断,javascript中有date函数和数组,用这2个可以处理。
我写了个简单的demo,希望对你有帮助
New Document
var time = new Array();
var i=0;//全局变量i
function test(){
time[i] = new Date().getTime();//每次点击的时间都记录下来放在数组中,执行完后i加一,当数组中有2个值时,判断这次时间和上次时间的差值
if(i>0){
if(time[i]-time[i-1]>1000){//javascript 的geTime()得到的是毫秒数,因此如果要大于一秒才alert()话,差值是1000
alert('ee')
}
}
i++;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
给你一段js代码参考,原理就是创建一个时间控件,按下按键就停止,抬起按键就计时,在配合按键检测(排除ctrl、shift之类的按键),就差不多咯:
<script>
var flag = 0;
var t;
function openFlag () {
t = setTimeout(function(){flag = 1; dosomething();}, 1000);
}
function closeFlag() {
clearTimeout(t);
flag = 0;
}
function dosomething() {
if (flag) {
// do something
alert('aaa');
}
}
</script>
<input type="text" onkeyup="openFlag()" onkeydown="closeFlag()" />
<script>
var flag = 0;
var t;
function openFlag () {
t = setTimeout(function(){flag = 1; dosomething();}, 1000);
}
function closeFlag() {
clearTimeout(t);
flag = 0;
}
function dosomething() {
if (flag) {
// do something
alert('aaa');
}
}
</script>
<input type="text" onkeyup="openFlag()" onkeydown="closeFlag()" />
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询