ASP.NET Button有一個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" />
...
的JavaScript addDigit
函數應該返回false
如果小於5點的數字都在文本框中插入:
<script type="text/javascript">
function addDigit(btn) {
var txtPIN = document.getElementById('<%= txtPIN.ClientID %>');
txtPIN.value += btn.value;
return txtPIN.value.length >= 5;
}
</script>
該腳本塊可以位於HTML文檔的<Head>
部分或表單的底部。
在事件處理程序代碼後會進行PIN驗證:
protected void btn_Click(object sender, EventArgs e)
{
// Check database to validate the PIN
string pin = txtPIN.Text;
...
}
注:語法'<%= txtPIN.ClientID %>'
在Javascript代碼用來解釋可能的ID重整由ASP.NET進行。
我注意到您的UI中有一個
返回按鈕。如果刪除最後一個數字,也可以處理,在客戶端代碼的命令,並返回
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);
}
這是完美的讓我走上正軌!非常感謝!我不確定在哪裏放置腳本,因此我在答案中添加了一行。對大多數人來說可能是顯而易見的......但是爲了像我這樣的新手的利益。 :) –
事實上,腳本塊通常放在窗體的底部(請參閱http://stackoverflow.com/questions/2451417/whats-pros-and-cons-putting-javascript-in-head-and-外放剛剛之前,該體)。在你的情況下,它應該在兩個地方工作。將它放在最後的優點是,一些涉及HTML元素的代碼可以立即執行,如果代碼位於「head」部分中(因爲元素尚未加載),該代碼無效。 – ConnorsFan
很高興知道!非常感謝你的幫助。 –