按此键时运行JavaScript!=进入

按此键时运行JavaScript!=进入,javascript,forms,asp.net-mvc-4,Javascript,Forms,Asp.net Mvc 4,我在一个MVC4网站上工作,我有一个带有搜索文本框的webgrid。我的文本框在一个表单中,当我按enter键时将提交该表单。我还有一个绑定到文本框的onkeypress脚本,它将在3 sek之后用输入的内容更新我的webgrid 我的问题是,我只想运行脚本,如果不是最后按下的键是回车 我的代码如下所示: @using (Ajax.BeginForm("Filter", new AjaxOptions { HttpMethod = "GET", Inser

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

我的问题是,我只想运行脚本,如果不是最后按下的键是回车

我的代码如下所示:

                    @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 />
                }
如果按下enter键,我希望它停止脚本(或不运行脚本的其余部分)

希望有人能帮助我


谢谢

首先,您没有向函数发送事件。 使用一些参数调用它,例如:

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

})

这有什么问题?问题是如果我按Enter键,它将调用一个表单,该表单将更新视图。当视图更新时,文本框被刷新。但键侦听器仍被调用,但对空文本字段作出了反应。但我通过使用一个键控侦听器使其成为一个Ajax响应程序来修复它。
<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);
}