Jquery keyup或keydown事件无法正常工作

时间:2012-07-24 21:14:37

标签: jquery asp.net-mvc-3 events autocomplete

我有一个自动填充文本框,无法触发按键事件。

以下是自动完成框的代码

<script type="text/javascript">
$(document).ready(function () {
    $("#TransFinishedPartNumber").autocomplete({
        source: function (request, response) {
            // define a function to call your Action 
            $.ajax({
                url: '@Url.Action("partLookUp", "Transaction")',

                // term will be the param used by your action method
                data: { term: request.term },
                success: function (data) {
                    response($.map(data, function (item) {
                        return { label: item.pt_part + " " + item.pt_desc1, value: item.pt_part };
                    }))
                    $("#TransFinishedPartNumber").removeClass('acLoading');
                },
                error: function () {
                    $("#TransFinishedPartNumber").removeClass('acLoading');
                }
            })
        },
        minLength: 1, // require at least one character from the user
        search: function () { $(this).addClass('acLoading'); },
    });

});

现在这里是事件javascript它永远不会触发......不能生存或绑定或任何事情......但疯狂的事情是自动完成框工作...

<script type="text/javascript">
//Transaction Event handlers and ajax calls
$(document).ready(function () {
    $("#TransFinishedPartNumber").bind("keydown",function (e) {
        $("#TransFinishedPartNumber").addClass("ui-state-default");

    });
    $("#TransFinishedPartNumber").bind("keydown",function (e) {
        $("#TransFinishedPartNumber").removeClass("ui-state-default");

    });
});

我也试过这种方式

<script type="text/javascript">
//Transaction Event handlers and ajax calls
$(document).ready(function () {
    $("#TransFinishedPartNumber").keydown(function (e) {
        $("#TransFinishedPartNumber").addClass("ui-state-default");

    });
    $("#TransFinishedPartNumber").keydown(function (e) {
        $("#TransFinishedPartNumber").removeClass("ui-state-default");

    });
});

我改为这个脚本是绝对肯定的

<script type="text/javascript">
//Transaction Event handlers and ajax calls
$(document).ready(function () {
    $("#TransFinishedPartNumber").keydown(function (e) {
        alert(e.which);
    });
});

1 个答案:

答案 0 :(得分:0)

按住键时会持续触发Keydown事件。您可能想尝试使用密钥。

例如,如果您执行了以下操作并保留了某些内容,则会不断进行。实际上每秒很多次:

$("body").bind("keydown",function(){
   $("body").append("pizza<br>");
});

但是密钥只发生一次!

$("body").bind("keyup",function(){
   $("body").append("pizza<br>");
});

因此,因为您的代码有两次keydown事件。它每秒多次添加和删除类。