[問題] TextBox只允許輸入數字及負號

作者: unfun (不好玩)   2014-03-27 10:30:36
private void endSpeed_KeyPress(object sender, KeyPressEventArgs e)
{
if (!Char.IsNumber(e.KeyChar) &&
!Char.IsPunctuation(e.KeyChar) &&
!Char.IsControl(e.KeyChar))
{
e.Handled = true;
}
else if (Char.IsPunctuation(e.KeyChar))
{
if (endSpeed.Text.LastIndexOf('.') != -1)
{
e.Handled = true;
}
if (e.KeyChar == '-')
{
if (this.endSpeed.Text.Length > 0)
e.Handled = true;
}
}
}
目前小弟在網路上搜尋只輸入數字的方法,
東拼西湊之下完成了一個堪用的過濾方式。
其主要的邏輯為
1.先篩選掉非數字浮號的字元
2.小數點只能有一個
3.負號只能在第一位
但現在有個問題了,有幾個方法無法使用
1.當textbox.text內已經有小數點,無法反白(全選)後輸入'.'
2.當textbox.text內有內容,無法反白(全選)後輸入'-'
總而言之我的過濾方式無法排除全選後輸入這種方法,是否有更好的處理方式。
作者: Eleganse (艾勒更斯)   2014-03-27 10:47:00
沒寫過 感覺上可以考慮用正規表示式寫在網頁客端js碼完成textbox這個控制項和前端碼及後端碼都很容易操控到
作者: pkmu8426 (巴426)   2014-03-27 11:26:00
我的話會採用 觸發事件 事件中每一次都重新針對textbox中的文字進行整行判斷
作者: GoalBased (Artificail Intelligence)   2014-03-27 12:26:00
寫js吧
作者: talenttb (CC)   2014-03-27 13:07:00
client js keydown 限制 server regular 檢查
作者: umi8422 (快被烤焦ㄉ魚)   2014-03-28 20:48:00
套jquery.validate程式都不用寫
作者: VVll (李奧納多皮卡丘)   2014-04-01 04:39:00
if(!double.TryParse(input, out d)) error;

Links booklink

Contact Us: admin [ a t ] ucptt.com