如何停止执行jquery函数

时间:2013-02-04 07:47:21

标签: jquery

您好我有一个函数,在每个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



});

2 个答案:

答案 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局部变量。如果你真的需要它们是全球性的,你可能想撤消它。