2012-11-16 81 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/

祝您好运!