入力フィールドで Enter キー イベントを検出したいので、キープレス イベントを持つように Knockout バインディングを設定しました。常にではなく、時々のみ正常に動作します。
コード:
<input name="" id="txtSearch" placeholder="" value="" type="search" data-bind="event: { keypress: $root.SendMsg }" />
ビューモデル:
self.SendMsg = function (data, event) {
try {
if (event.which == 13) {
var SearchText = $("#txtSearch").val();
$(".divLoading").show();
$.ajax({
url: 'http://localhost/api/contacts/search',
type: 'GET',
dataType: 'jsonp',
data: { Text: SearchText },
context: this,
success: function (result) {
self.Contacts(result);
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
$(".divLoading").hide();
alert(errorThrown);
},
complete: function () {
$('#ListSearch').listview('refresh');
}
});
return false;
}
return true;
}
catch (e)
{
alert(e);
}
}
};
データは API から正常に取得されていますが、テキスト入力が機能する場合と機能しない場合があります。ページを更新すると、正常に動作します。どうしてか分かりません。友達を助けてください