0

キー ダウン イベントを起動できないオートコンプリート テキスト ボックスがあります。

オートコンプリートボックスのコードは次のとおりです

<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);
    });
});

4

1 に答える 1

0

キーを押し続けると、Keydown イベントが常に発生します。代わりに keyup を試してみてください。

たとえば、次のようにして何かを押したままにすると、常に動き続けます。実際、毎秒何回も:

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

しかし、キーアップは一度しか起こりません!

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

したがって、コードにはキーダウンイベントが2回あるためです。1秒間に何度もクラスを追加および削除しています。

于 2012-07-24T22:26:19.727 に答える