0

私は MVC4 サイトで作業しており、検索テキストボックスを備えた Web グリッドがあります。私のテキストボックスはフォーム内にあり、Enter キーを押すと送信されます。テキストボックスにバインドされた onkeypress スクリプトもあります。これは、3 秒後に、他の入力内容で Web グリッドを更新します。

私の問題は、最後に押されたキーがEnterでない場合にのみスクリプトを実行したいということです。

私のコードは次のようになります。

                    @using (Ajax.BeginForm("Filter", new AjaxOptions { HttpMethod = "GET", InsertionMode = InsertionMode.Replace, UpdateTargetId = "projects" }))
                {  
                    <div class="paddingTextToleft">
                        Search:
                        <input id="searching" name="searchString" type="text" value="" onkeypress="return keypressed()">


                        <p class="error">@ViewBag.SearchMessage</p>

                    </div>
                    <br />
                }

そしてスクリプト:

 var timeoutReference;

function keypressed() {
    if (window.event.keyCode == 13) {
        //Do not run the script!
        return true;
    }
    else {
        if (timeoutReference) clearTimeout(timeoutReference);
        timeoutReference = setTimeout(function () {
            var value = $("#searching").val();


            $.ajax({
                url: '@Url.Action("Filter", "Project")',
                contentType: 'application/html; charset=utf-8',
                type: "GET",
                dataType: 'html',
                data: { searchString: value },
            }).success(function (result) {
                $('#projects').html(result);
            });
        }, 3000);
    }
};

押されたキーがEnterの場合、スクリプトを停止する(または残りを実行しない)ようにします。

誰でも私を助けてくれることを願っています。

ありがとう

4

1 に答える 1

1

まず、イベントを関数に送信していません。いくつかのパラメーターを指定して呼び出します。

<input id="searching" name="searchString" type="text" value="" onkeypress="keypressed(e)">

次に、関数でこのイベントを受け入れます。

var timeoutReference;

function keypressed(e) {
if (e.keyCode == 13) {
    //Do not run the script!
    return;
}
else {
    if (timeoutReference) clearTimeout(timeoutReference);
    timeoutReference = setTimeout(function () {
        var value = $("#searching").val();


        $.ajax({
            url: '@Url.Action("Filter", "Project")',
            contentType: 'application/html; charset=utf-8',
            type: "GET",
            dataType: 'html',
            data: { searchString: value },
        }).success(function (result) {
            $('#projects').html(result);
        });
    }, 3000);
}

};

于 2013-10-02T07:08:39.893 に答える