2013-02-04 197 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局部變量。如果你真的需要它們成爲全球性的,你可能想要撤銷這一點。