javascript と asp.net の Enter キーに問題があります。
検索を行う textchanged イベントを使用してこのようなコントロールを持っていますが、ユーザーが入力したときにそれを制御したい
<asp:TextBox ID="TextBox1" runat="server" onkeyup="EnterEvent(event)" AutoPostBack="true" OnTextChanged="TextBox1_TextChanged" />
そのため、非常にうまく機能するこの JavaScript 関数を作成しました。任意の文字入力で Enter ポストバックを回避するため
function EnterEvent(e) {
var keycode = (e.keyCode ? e.keyCode : e.which);
if (keycode == 13) {
return true;
}
else {
return false
}
}
そして、TextBox にコンテンツが含まれるタイミングを制御したかったので、js を次のように変更しました。
function EnterEvent(e, ctrl) {
var keycode = (e.keyCode ? e.keyCode : e.which);
if (keycode == 13) {
return ctrl.value.length > 2;
}
else {
return false
}
}
制御
<asp:TextBox ID="TextBox1" runat="server" onkeyup="EnterEvent(event, this)" AutoPostBack="true" OnTextChanged="TextBox1_TextChanged" />
しかし、何も起こりません。私が入力するたびに、ページのポストバック。
ロードページのコードビハインドにもこれを追加しました
TextBox1.Attributes.Add("onkeypress", "EnterEvent(event, this);");
TextBox1.Attributes.Add("onkeyup", "EnterEvent(event, this);");
TextBox1.Attributes.Add("onkeydown", "EnterEvent(event, this);");
私のページはまだ Enter キーでポストバックを行っています。アイデアは、少なくとも 3 文字ある場合に Enter ポストバックを停止することです。アイデアや別のアプローチはありますか?
> -----編集--------------------
EnterEvent の前にこの関数を追加しました
$(function () {
$(':text').bind('keydown', function (e) {
if (e.keyCode == 13)
e.preventDefault();
});
});
しかし、それはすべてのページでEnterをブロックします。Enter はまったく機能しません。
> -----編集 2--------------------
よし、成功した!以前のコメントで述べたように、ダミーのボタン コントロールを追加して、テキスト ボックスからイベントを転送し、そのクリック イベントを呼び出すようにしました。まったくきれいではありませんが、機能していて急いでいます。みなさま、回答ありがとうございます。誰かがまだ助けてくれるなら、私はそれを感謝します。この質問のレビューを続けます。ありがとう。
function EnterEvent(e, ctrl) {
var keycode = (e.keyCode ? e.keyCode : e.which);
if (keycode == 13 && ctrl.value.length > 2) {
$('[id$=Button1]').click();
}
else {
return false;
}
}
<asp:TextBox ID="TextBox1" runat="server" onkeyup="EnterEvent(event, this)" />
<asp:Button ID="Button1" runat="server" OnClick="TextBox1_TextChanged" style="visibility:hidden;width:0;"/>