2013-02-04 146 views
-3

你好我有一个函数,在每个keyup事件测试中,如果输入的值的长度是== 3,并且如果是这样,则调用另一个函数;如何停止执行jquery函数

我的问题是,我想,当长度> 3停止这个jQuery功能

$('#txtInput').bind('keyup', lil); 

我试图解除绑定的执行,但它不工作;在此先感谢

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

而是解除绑定事件只是使用return语句停止的代码继续执行的功能。

if (k>3) return; 
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);  
}); 

而且,你要绑定的功能律到keyup事件两次,第一次最有可能该文件已经被解析之前由浏览器。只保留封装在(隐式)$(document).ready()函数中的第二个绑定。

还要注意,我通过在“var”前加上了newstr和k局部变量。如果你真的需要它们成为全球性的,你可能想要撤销这一点。