私は 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の場合、スクリプトを停止する(または残りを実行しない)ようにします。
誰でも私を助けてくれることを願っています。
ありがとう