2012-11-16 52 views
1

我正在使用jQuery(我是jQuery的新手:))發出一些AJAX後臺請求的ASP.NET應用程序。 我的jQuery的代碼如下:

$(document).ready(function() { 

     $("#ctl00_cphContent_txtOrgName").keypress(function() { 

      var orgNameLen = $("#ctl00_cphContent_txtOrgName").val().length; 
      if (orgNameLen <= 4) { 
       $("#orgNameHints").empty(); 
       $("#orgNameHints").css('display', 'none'); 
       return; 
      } 
      $("#orgNameHints").css({ "visibility": "visible" }); 
      $("#orgNameHints").html("Checking..."); 
      var OrgName = $(this).val(); 
      $.get("ProcessOrgName.aspx?n=" + OrgName, function (data) { 
       $("#orgNameHints").html(data); 
       $("#orgNameHints").show(); 
      }); 
     }); 
     $("#ctl00_cphContent_txtOrgName").blur(function() { 
      $("#orgNameHints").empty(); 
      $("#orgNameHints").css({ "visibility": "hidden" }); 
     }); 
    }); 

和ASP代碼:

<asp:TextBox ID="txtOrgName" runat="server" MaxLength="100"></asp:TextBox> 
<div id="orgNameHints" style="border: 1px solid silver; display:none; position:absolute; padding: 5px; background: #EFEFEF; z-index: 100;"></div> 

這裏txtOrgName是用於與背景(就像的提示相同的數據,以檢查現有記錄的文本框在谷歌搜索關鍵字)。 .get()方法將在ProcessOrgName.aspx處將搜索關鍵字作爲查詢字符串發佈,該查詢返回數據庫中此類現有記錄的列表。

Everyting工作正常,在這裏,但我現在面臨的問題是:

  1. 按鍵時()事件調用搜索一樣,如果我尋找 計算器將查詢stackoverflo其中w ^缺少。那麼,有沒有辦法獲得準確的結果。
  2. 當我搜索關鍵字時,它顯示正常,但是當我按退格鍵 來清除我的文本框時,它仍然會顯示相同的結果,直到文本框已清除後我再按下退格鍵兩次。所以, 可以請你給我任何想法,使它不會 顯示結果,以防我按下退格鍵。
  3. 以show()方式顯示和隱藏名爲orgNameHints的div的任何其他方式;和hide();在我的情況下不起作用,我希望它更準確!
  4. 當用戶複製粘貼關鍵字而不是輸入時,會出現一些情況,所以在這種情況下也應該獲得搜索結果。

任何幫助真的很感激。

+0

將一個實際的方法直接綁定到按鍵事件並不是一個好的方法,我建議你在這裏閱讀我的問題的答案 - http:// stackoverflow。com/questions/8627175 /更好的方式來寫這在jQuery –

+0

謝謝@Atif,但這只是一個改善搜索的建議,但實際上並沒有解決問題。我會在那裏提出修正案。請幫我解決實際問題。 – Cyberpks

回答

0
  1. 這可能是您捕獲文本時的結果;按鍵/ KEYUP/KEYDOWN。我想你可能想在keyup()事件上運行這個腳本。有關詳細信息,請參閱http://www.bloggingdeveloper.com/post/KeyPress-KeyDown-KeyUp-The-Difference-Between-Javascript-Key-Events.aspx
  2. 參照1
  3. 爲什麼顯示/隱藏不起作用?或者,你可以使用fadeIn/fadeOut或$(「elem」)。css({display:none})
  4. 對於粘貼(CTL + V),我相信這是一個keydown()事件,如果(e。 keyCode == 86)// 86是粘貼事件。至於鼠標粘貼,我不知道......在這個上找不到任何好的信息。

這是您的代碼的起始塊,下面有小提琴鏈接。

$(document).ready(function(){ 
    function DoWork(){ 
    $("#searchOutput").append("<li>" + $("#tb1").val() + "</li>"); 
    } 
$("#tb1").keyup(DoWork); 
    $("#tb1").keydown(function(e){ 
     if(e.keyCode == 86){ 
      DoWork(); 
     } 
    });   
});​ 

http://jsfiddle.net/TNCodeMonkey/CnDGw/3/

祝您好運!