您好我有一个函数,在每个keyup事件测试中,如果输入值的长度是== 3,如果是,则调用另一个函数;
我的问题是,我希望当长度> 3时停止执行此jquery函数
$('#txtInput').bind('keyup', lil);
我尝试了unbind,但它不起作用;提前致谢
var lil = function ()
{
var strin = document.getElementById('txtInput').value;
newstr = strin.replace(/[^\u0400-\u04FF0-9]/gi, '');
alert (newstr);
k = newstr.length;
if (newstr.length==3)
{triming();}
}
$(function()
{
$('#txtInput').bind('keyup', lil);
/*if (k>3)
$("txtInput").unbind("keyup", lil); */ - this doesn't work
});
答案 0 :(得分:2)
不使用unbinding事件,只需使用return语句停止在函数中进一步执行代码。
if (k>3) return;
答案 1 :(得分:0)
主要问题是,取消绑定事件处理程序的代码只在页面加载时运行一次,而变量k仍未定义。你需要检查是否k> 3每次keyup处理程序完成其工作时:
var lil = function ()
{
var strin = document.getElementById('txtInput').value;
var newstr = strin.replace(/[^\u0400-\u04FF0-9]/gi, '');
alert (newstr);
var k = newstr.length;
if (k==3){
triming();
}
if (k>3)
$("txtInput").unbind("keyup", lil);
$(function()
{
$('#txtInput').bind('keyup', lil);
});
此外,您将函数lil绑定到keyup事件两次,这是浏览器解析文档之前的第一次。仅保留包含在(隐式)$(document).ready()函数中的第二个绑定。
另请注意,我通过在其前面加上“var”来创建newstr和k局部变量。如果你真的需要它们是全球性的,你可能想撤消它。