ASP.NETとAJAXWebformsを使用してインターフェイスを開発しています。ページの初期化時、およびPIN番号を使用してユーザーを検証するためのさまざまなアクションが要求された後の更新パネルが表示されます。インターフェイスは主にタブレットで使用されるため、次のようなユーザーのPIN番号を収集するためのボタン付きのキーパッドを作成しました。
ボタンをクリックすると、次のように実行されます。
protected void btn0_Click(object sender, EventArgs e)
{
AddNumberToPin("0");
}
ラベル付きの番号を引数として呼び出すプロシージャstrDigit
は、次のように定義されます。
protected void AddNumberToPin(string strDigit)
{
txtPIN.Text += strDigit;
if (txtPIN.Text.Length == 5)
{
...
...check database to validate the pin
...
}
}
これは機能しますが、ボタンをクリックするたびにWebサーバーへの別のラウンドトリップが作成されるため、非常に時間がかかります。収集されたPINをクライアントのローカル変数に格納し、5桁が収集された後でのみサーバーに投稿するのは簡単なようです。私はWebプログラミングに慣れていないので、これを行う方法がわかりません。
ASP.NETボタンにはOnClick
、サーバー側のイベントハンドラーを設定できるプロパティがあります。またOnClientClick
、ボタンがクリックされたときに最初に実行するクライアントコードを含めることができるプロパティもあります。そのクライアントコードがを返す場合false
、サーバーへのポストバックはキャンセルされます。
ボタンのマークアップでは、両方のプロパティを設定できます。
<asp:TextBox ID="txtPIN" runat="server" />
<asp:Button runat="server" Text="0" OnClientClick="return addDigit(this);" OnClick="btn_Click" />
<asp:Button runat="server" Text="1" OnClientClick="return addDigit(this);" OnClick="btn_Click" />
<asp:Button runat="server" Text="2" OnClientClick="return addDigit(this);" OnClick="btn_Click" />
...
TextBoxに挿入された数字が5桁未満の場合、JavascriptaddDigit
関数は次のように返さfalse
れます。
<script type="text/javascript">
function addDigit(btn) {
var txtPIN = document.getElementById('<%= txtPIN.ClientID %>');
txtPIN.value += btn.value;
return txtPIN.value.length >= 5;
}
</script>
そのスクリプトブロック<Head>
は、HTMLドキュメントのセクションまたはフォームの下部にあります。
コードビハインドのイベントハンドラーは、PIN検証を実行します。
protected void btn_Click(object sender, EventArgs e)
{
// Check database to validate the PIN
string pin = txtPIN.Text;
...
}
注:この構文'<%= txtPIN.ClientID %>'
は、ASP.NETによって実行される可能性のあるIDマングリングを説明するためにJavascriptコードで使用されます。
false
、ポストバックを防ぐために戻ることもできます 。
<asp:Button ID="btnBack" runat="server" Text="Back" OnClientClick="removeLastDigit(); return false;" />
Javascriptブロックに追加された次の関数を使用します。
function removeLastDigit() {
var txtPIN = document.getElementById('<%= txtPIN.ClientID %>');
txtPIN.value = txtPIN.value.substring(0, txtPIN.value.length - 1);
}
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加