我正在處理asp.net web應用程序。如何只允許文本框中的十進制數字
我在該文本框中有一個文本框,我需要在按下提交按鈕之前允許十進制數。所以如何在提交提交按鈕之前在客戶端執行此操作。
如果可以通過javascript完成,ajax aur從代碼後面請讓我知道。
我正在處理asp.net web應用程序。如何只允許文本框中的十進制數字
我在該文本框中有一個文本框,我需要在按下提交按鈕之前允許十進制數。所以如何在提交提交按鈕之前在客戶端執行此操作。
如果可以通過javascript完成,ajax aur從代碼後面請讓我知道。
如果你想要一個代碼隱藏替代方案,你可以依靠TryParse
。爲Button1
和TextBox1
示例代碼:
string currentDot1 = System.Globalization.CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator;
string currentDot2 = System.Globalization.CultureInfo.CurrentCulture.NumberFormat.CurrencyDecimalSeparator;
string currentDot3 = System.Globalization.CultureInfo.CurrentCulture.NumberFormat.PercentDecimalSeparator;
decimal curVal = 0m;
if (TextBox1.Text.Trim().Length > 0 && (TextBox1.Text.Contains(currentDot1) || TextBox1.Text.Contains(currentDot2) || TextBox1.Text.Contains(currentDot3)) && decimal.TryParse(TextBox1.Text, out curVal))
{
//curVal is valid decimal
}
else
{
//NO DECIMAL
}
不會失敗如果數字不爲0(仍然可以是小數?) – Noctis
@Noctis i t也會以5(或任何其他整數)失敗。我明白,OP想要一個小數,意思是包含一個點的數字;不是.NET十進制類型。預計此代碼會考慮錯誤的內容,但不包括「。」。 – varocarbas
好吧,他不太清楚,順便說一句,看看我的評論爲其他答案(user3024816) – Noctis
你能做到雙向,既可以通過內置在asp.net或使用JavaScript的驗證。通過JavaScript你可以如下做到這一點(這將阻止用戶進入字符鍵,因此只有數字將被允許):
<asp:Text onkeypress="return isNumber(event);" runat="server"/>
<script>
function isNumber(evt) {
evt = (evt) ? evt : window.event;
var charCode = (evt.which) ? evt.which : evt.keyCode;
if (charCode > 31 && (charCode < 48 || charCode > 57)) {
return false;
}
return true;
}
</script>
如果用戶區域使用的值不是'。',會發生什麼情況。爲小數部分? (有些國家,我知道,我知道......瘋狂......但是,有些國家也會講英語......) – Noctis
而不是寫在JavaScript或服務器端驗證自己的自定義驗證代碼,有是那裏的圖書館,允許你用jQuery做驗證客戶端。
添加這些腳本引用(你需要的jQuery以及):
<script src="http://jquery.bassistance.de/validate/jquery.validate.js"></script>
<script src="http://jquery.bassistance.de/validate/additional-methods.js"></script>
然後你就可以做到以下幾點:
<script type="text/javascript>
$(document).ready(function()
{
$("#idOfMyForm").validate(
{
rules: {
IdOfMyTextBox: {
required: true,
number: true
}
}
});
$("#submitButton").click(function(e){
if(!$("#idOfMyForm").valid(){
e.preventDefault(); //stop the form from submitting
alert("My form is not valid.");
}
//continue submitting the form, do whatever you need to do.
});
});
</script>
http://www.codeproject.com/Questions/425670 /文本框只爲數字十進制值 –
我會說..驗證它在sumbit ..使用正則表達式或任何你喜歡的方法...在提交之前檢查小數似乎是一個壞主意.. –