WinFormsと同様に、EnterまたはTabを押さずにTextBoxにテキストを入力すると、asp.net TextBoxで自動ポストバックを発生させ、サーバー側のイベントをアクティブにします。これは可能ですか?もしそうなら、3文字や4文字などの特定の数の文字を入力した後にのみこれが発生する可能性はありますか? ありがとうございました。
4 に答える
Windows アプリケーションと Web アプリケーションを比較することはできません。ユーザーが char を入力したときにサーバーにポスト バックするということは、すべての HTML を ASP.NET から再作成し、クライアントに送り返す必要があることを意味します。しかし、ここに例があります:
aspx:
<script type="text/javascript">
var MIN_TEXTLENGTH = 3;
function checkPostback(ctrl) {
if (ctrl != null && ctrl.value && ctrl.value.length >= MIN_TEXTLENGTH) {
__doPostBack(ctrl.id, '');
}
}
</script>
<asp:TextBox ID="TextBox1" OnKeyUp="checkPostback(this);" AutoPostBack="true" OnTextChanged="TextChanged" runat="server"></asp:TextBox>
コードビハインド:
Protected Sub TextChanged(ByVal sender As Object, ByVal e As EventArgs)
TextBox1.Attributes.Add("onfocus", "javascript:this.value=this.value;")
TextBox1.Focus()
End Sub
これは、Ajax と onkeypress イベント、およびある種のカウンターを使用して行うことができます。
したがって、関数をテキストエリアの onKeyPress イベントに配線します。このイベントは、起動するたびにカウンターをインクリメントします。この数値が 3 または 4 になると、バックグラウンドでフォームをサーバーにポストする ajax 関数を呼び出してから、再びカウンター。
これにより、テキストエリアの使用中に発生する 3 回目または 4 回目のキー押下 (スペース、エンター、バックスペースなど) ごとにフォームがバックグラウンドでポストされます。
TextChange
TextBox のblur
イベントは、JavaScript ではイベントになります。これは、コントロール (クライアント側では入力またはテキストエリアである TextBox) を離れ、値が変更された場合にのみ、ポストバックを起動できることを意味します。だから、それはトリックなしでは不可能です。
ただし、アーキテクチャ (サーバーに情報をポストバックする方法) については、うまくいかないと言わざるを得ません。ポストバックは非常にコストがかかるため、できるだけ避ける必要があります。私の提案は、入力ボックスのキーダウン イベントと組み合わせて ajax を使用することです。