0

以下のようなフォームタグ内のオートコンプリートの入力コントロールがあります。

 <input type="text" class="tags" data-bind="value: selectedMember(), event: { keypress: $root.DisablePostBack}" />

以下のように力を選択するためのぼかしイベントを追加しました。

$(function () {
        $('.tags').autocomplete({
            //make ajax call to get all mentored member of logged member
            source: function (request, response) {
                $.ajax({

                });
            },
            minlength: 0,
            focus: function () {
                // prevent value inserted on focus
                return false;
            },
            select: function (event, ui) {
                self.selectedMember(this.value);
                return false;
            }

        }).blur(
            function () {
                var terms = split(this.value);
                self.selectedMember(terms);
                return false;
            }
                );

オートコンプリートからメンバーを選択してEnterキーを押す代わりに、ユーザーが名前を入力すると、blurイベントが呼び出されます。私の問題は、Enterキーを押すと、ページが再びリロードされることです。Enterキーを押したときにページが再読み込みされないようにする方法。

*編集:*エンターキーを無効にするために、以下のような機能を1つ追加しました。

self.DisablePostBack = function (e) {
    if (e.which == 13) {
        return false;
    }
};

そして、そのテキストボックスのキーを押すとそれを呼び出しましたが、その後はキーが機能しなくなります。

4

2 に答える 2

0

ぼかしイベントをkeypressイベントに置き換え、Enterキーが押されているかどうかを以下のように確認します。

.keypress(function (e) {
            if (e.which == 13) {
                //write code
            }
        });

これで、ページをリロードせずに動作します。エンターキーがクロムで押されたときにブラーが呼び出されないため、ブラーをキープレスに置き換えました。

そして、あなたの有益な提案に感謝します。

于 2013-01-03T07:52:55.687 に答える
0

次のようなものを使用してみてください。

if((e.keyCode == 13) {// do something;
return false;}

e.keyCode == 13は、Enterキーが押されているかどうかを確認するのに役立ちます。その後、コードの一部を実行できます。その後、ブラウザがデータを送信しないようにfalseを返す必要があります。

于 2013-01-02T12:14:29.033 に答える