2012-07-24 141 views
0

我在一個網站上有一個輸入字段,我正在使用一個鏈接到它的jquery ajax腳本。每次按下某個鍵時,ajax腳本都會搜索與輸入字段的值匹配的字符串,如果找到該字符串,腳本會更新頁面上的div並將輸入字段的值設置爲空,以便用戶有一個新的空間來鍵入一個新的字符串。但是,如果用戶鍵入第一個字符串並且腳本使用響應數據更新div並清除輸入字段值,則用戶不必等待片刻就可以再次開始輸入,而是鍵入到字段中的任何文本(在接下來的兩秒鐘左右)被刪除後,他們鍵入它。我只是想停止他們的文本被刪除,如果他們要鍵入一個新的字符串,在第一個驗證後不久,帶有Ajax onkeypress的輸入字段導致輸入被刪除

這裏是jquery腳本,更新的股利,這是由輸入解僱(ID爲:搜索欄)的onkeypress事件事件:

function search(status){ 
    if($("#searchbar").val().length > 1){ 
    $.get("http://www.website.com/subfolders/some_php_script.php", 
     {l: status, q:$("#searchbar").val()}, 
     function(data){ 
     $("#div-to-update").html(data); 
     } 
    ); 
    } 
} 

編輯:#searchbar是不是得到更新

的DIV中
+0

您可以用'keyup',而不是'keypress' 。 – undefined 2012-07-24 14:41:44

+0

搜索欄是否在div-to-update? – 2012-07-24 14:46:24

+0

''.unbind()'當你傳遞數據的引用到服務器時的keyup函數,在HTML更新後重新'綁定()'keyup函數。 – Ohgodwhy 2012-07-24 14:46:45

回答

0

我已經找到了答案,我幾乎可以肯定它與我的Ajax可能射擊太多次做{有人可以確認這是否是連一個真正的問題?}

我設置一個布爾值變量作爲決定是否不是字符串已經被發現了,如果是這樣的話那麼什麼都得到更新,這裏是固定碼的控制:

var found = false; //initialized 

function search(status){ 
    if($("#searchbar").val().length > 1){ 
    $.get("http://www.website.com/subfolders/some_php_script.php", 
     {l: status, q:$("#searchbar").val()}, 
     function(data){ 
     if(!found){ 
      $("#div-to-update").html(data); 
      found = true; 
     } 
     } 
    ); 
    } 
}