1

我正在开发一个 ASP.NET 应用程序,该应用程序使用 jQuery 发出一些 AJAX 后台请求(我是 jQuery 的新手 :))。我的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是用于在后台检查具有相同数据的现有记录的文本框(就像在 google 中搜索关键字的提示一样)。.get() 方法会将搜索关键字作为查询字符串发布在ProcessOrgName.aspx,它会从数据库中返回此类现有记录的列表。

Everyting在这里工作正常,但我面临的问题是:

  1. Keypress() 事件调用搜索,例如,如果我正在搜索 stackoverflow,它将查询缺少w的stackoverflo 。那么,有什么方法可以得到准确的结果。
  2. 当我搜索关键字时,它显示正常,但是当我按退格键清除我的文本框时,它仍然会显示相同的结果,直到我在文本框已经清除后再按两次退格键。所以,你们能否给出任何想法,以便在我按下退格键时它不会显示结果。
  3. orgNameHints显示和隐藏名为show()的 div 的任何其他方式;和隐藏();在我的情况下不起作用,我希望它更准确!
  4. 在某些情况下,用户将复制粘贴关键字而不是键入,因此在这种情况下它也应该获得搜索结果。

非常感谢任何帮助。

4

1 回答 1

0
  1. 这可能是您捕获文本时的结果;按键/按键/按键。我想你可能想在 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 是粘贴事件。至于鼠标粘贴,我不确定..找不到任何好的信息。

Here is a starter block of code for you, with a fiddle link below.

$(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/

Best of luck!

于 2012-11-16T22:06:41.757 回答