aspx.net webform里面的textbox控件,只能输入小数点和数字,在网上搜了一堆,也没有理想的,请大家帮帮忙,多谢了!附一个例子(不完善的),可以输入数字和小数点,但只能在英文输入法下使用,换成中文输入法就不行了,另外没有限制小数点的个数和屏蔽粘贴过来的中文字符。<asp:TextBox ID="TBMoney" runat="server" Width="320px" onkeypress="isnum()"></asp:TextBox>
<script type ="text/jscript" language="javascript">
function isnum()
{
if(event.keyCode==47 || event.keyCode<46 || event.keyCode>57)
{
event.keyCode=0;
}
}
</script>
<script type ="text/jscript" language="javascript">
function isnum()
{
if(event.keyCode==47 || event.keyCode<46 || event.keyCode>57)
{
event.keyCode=0;
}
}
</script>
function clearNoNum(id) {
if (isNaN($(id).value) || ($(id).value.length > 1 && $(id).value.substr(0, 1) == "0" && $(id).value.substr(1, 1)!=".")) {
//先把非数字的都替换掉,除了数字和.-
$(id).value = $(id).value.replace(/[^\d.-]/g, "");
//必须保证第一个为数字而不是.
$(id).value = $(id).value.replace(/^\./g, "");
//保证只有出现一个.而没有多个.
$(id).value = $(id).value.replace(/\.{2,}/g, ".");
//保证.只出现一次,而不能出现两次以上
$(id).value = $(id).value.replace(".", "$#$").replace(/\./g, "").replace("$#$", ".").replace("-", "$##$").replace(/\-/g, "").replace("$##$", "-"); if ($(id).value.indexOf('.') >= 0)//包括 "."
{
var zShu = $(id).value.split('.')[0];
var xShu = $(id).value.split('.')[1];
if (zShu.length == 1) { }
else if (zShu.length == 2) {
if (zShu.substr(0, 1) == "0") {
if (zShu.substr(1, 1) == "0") {
$(id).value = "0" + $(id).value.substr(2);
}
else {
$(id).value = $(id).value.substr(1);
}
}
}
else {
var control = "0";
for (var i = 1; i <= zShu.length; i++) {
if (zShu.substr(0, i) == control) {
if (i == zShu.length) {
$(id).value = $(id).value.substr(i - 1); break;
}
else
control += "0";
}
else {
$(id).value = $(id).value.substr(i - 1);
break;
}
}
}
if (xShu.length == 1)
$(id).value = $(id).value + "0";
if (xShu.length > 2)
$(id).value = $(id).value.split('.')[0] + "." + xShu.substr(0, 2);
}
else {
var zShu = $(id).value;
if (zShu.length == 1) { }
else if (zShu.length == 2) {
if (zShu.substr(0, 1) == "0") {
if (zShu.substr(1, 1) == "0") {
$(id).value = "0" + $(id).value.substr(2);
}
else {
$(id).value = $(id).value.substr(1);
}
}
}
else {
var control = "0";
for (var i = 1; i <= zShu.length; i++) {
if (zShu.substr(0, i) == control) {
if (i == zShu.length) {
$(id).value = $(id).value.substr(i - 1); break;
}
else
control += "0";
}
else {
$(id).value = $(id).value.substr(i - 1); break;
}
}
}
$(id).value = $(id).value + ".00";
}
var x = id.substr(id.length - 1);
var arrList = $("hf_ProjInfoList").value.split('|')[x - 1]; $(id).value = switchRoundtype($(id).value, arrList.split(';')[3]);
}
} function switchRoundtype(value, roundtype) {
var xvalue = value.split('.')[1];
if (roundtype == "2")//小数全舍
{
value = value.split('.')[0] + ".00";
} if (roundtype == "3")//小数全入
{
if (xvalue != "00") {
var inumber = parseInt(value.split('.')[0]) + 1;
value = (parseInt(value.split('.')[0]) + 1) + ".00";
}
}
return value;
}建议:最好不要用onkeypress而用onkeyup.火狐下用oninput
//先把非数字的都替换掉,除了数字和.-
$(id).value = $(id).value.replace(/[^\d.-]/g, "");
//必须保证第一个为数字而不是.
$(id).value = $(id).value.replace(/^\./g, "");
//保证只有出现一个.而没有多个.
$(id).value = $(id).value.replace(/\.{2,}/g, ".");
//保证.只出现一次,而不能出现两次以上
$(id).value = $(id).value.replace(".", "$#$").replace(/\./g, "").replace("$#$", ".").replace("-", "$##$").replace(/\-/g, "").replace("$##$", "-"); 发这么多只是觉得你可能会用到后面那些
if (!(Char.IsNumber(e.KeyChar) || e.KeyChar == '\b' || e.KeyChar == '.'))
{
e.Handled = true;
}
KeyPress事件写这些代码isNumber 只接受数字不包括小数点
然后把小数点加进去就行了
e.KeyChar == '\b'
允许接收 backspace键
ControlToValidate="txt_maxZJF" ErrorMessage="应为数值"
ValidationExpression="^[1-9][0-9]{0,1}(\.\d{1,2})*$
"> </asp:RegularExpressionValidator>
有一种控件叫做验证控件