如果按下键,则运行JavaScript!= ENTER

时间:2013-10-02 06:59:03

标签: javascript forms asp.net-mvc-4

我在MVC4网站上工作,我有一个带搜索文本框的webgrid。我的文本框位于表单内,当我按回车键时将提交。我还有一个绑定到文本框的onkeypress脚本,在3 sek之后,用我输入的其他内容更新我的webgrid。

我的问题是,如果没有按下的最后一个键是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);
    }
};

如果按下键,则我希望它停止脚本(或不运行其余部分)。

希望有人能帮助我。

由于

1 个答案:

答案 0 :(得分: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);
}

};