我正在使用ASP.NET和AJAX Webforms开发界面。在页面初始化时以及在请求各种操作以使用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" />
...
如果在文本框中插入的数字少于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 %>'
Javascript代码中使用了该语法,以说明由ASP.NET执行的可能的ID修改。
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] 删除。
我来说两句