我在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);
}
};
如果按下键,则我希望它停止脚本(或不运行其余部分)。
希望有人能帮助我。
由于
答案 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);
}
};