允许使用javascript将小数限制为2的文本框
我有一个问题,将文本框中小数点后的值限制为2 我不想用正则表达式。 谁能帮我实现这个目标 我不允许字符和小数点限制为1 这是我的密码:允许使用javascript将小数限制为2的文本框,javascript,decimal,Javascript,Decimal,我有一个问题,将文本框中小数点后的值限制为2 我不想用正则表达式。 谁能帮我实现这个目标 我不允许字符和小数点限制为1 这是我的密码: function CheckNumeric(e) { if (window.event) // IE { if ((e.keyCode < 48 || e.keyCode > 57) & e.keyCode != 8 & !(e.keyCode == 46 && e.target.
function CheckNumeric(e) {
if (window.event) // IE
{
if ((e.keyCode < 48 || e.keyCode > 57) & e.keyCode != 8 & !(e.keyCode == 46 && e.target.value.indexOf(".") == -1)) {
event.returnValue = false;
return false;
}
}
else { // Fire Fox
if ((e.which < 48 || e.which > 57) & e.which != 8 & !(e.which == 46 && e.target.value.indexOf(".") == -1)) {
e.preventDefault();
return false;
}
}
}
}
请考虑如下:
<asp:TextBox ID="TextBox1" runat="server" Width="180px" onkeypress="return onlyDotsAndNumbers(this,event)"></asp:TextBox>
function onlyDotsAndNumbers(txt, event) {
var charCode = (event.which) ? event.which : event.keyCode
if (charCode == 46) {
if (txt.value.indexOf(".") < 0)
return true;
else
return false;
}
if (txt.value.indexOf(".") > 0) {
var txtlen = txt.value.length;
var dotpos = txt.value.indexOf(".");
if ((txtlen - dotpos) > 2)
return false;
}
if (charCode > 31 && (charCode < 48 || charCode > 57))
return false;
return true;
}
.aspx页面中的Textbox控件,如下所示:
<asp:TextBox ID="TextBox1" runat="server" Width="180px" onkeypress="return onlyDotsAndNumbers(this,event)"></asp:TextBox>
function onlyDotsAndNumbers(txt, event) {
var charCode = (event.which) ? event.which : event.keyCode
if (charCode == 46) {
if (txt.value.indexOf(".") < 0)
return true;
else
return false;
}
if (txt.value.indexOf(".") > 0) {
var txtlen = txt.value.length;
var dotpos = txt.value.indexOf(".");
if ((txtlen - dotpos) > 2)
return false;
}
if (charCode > 31 && (charCode < 48 || charCode > 57))
return false;
return true;
}
请参阅,onkeypress事件,调用javascript函数之一,如下所示:
<asp:TextBox ID="TextBox1" runat="server" Width="180px" onkeypress="return onlyDotsAndNumbers(this,event)"></asp:TextBox>
function onlyDotsAndNumbers(txt, event) {
var charCode = (event.which) ? event.which : event.keyCode
if (charCode == 46) {
if (txt.value.indexOf(".") < 0)
return true;
else
return false;
}
if (txt.value.indexOf(".") > 0) {
var txtlen = txt.value.length;
var dotpos = txt.value.indexOf(".");
if ((txtlen - dotpos) > 2)
return false;
}
if (charCode > 31 && (charCode < 48 || charCode > 57))
return false;
return true;
}
函数onlyDotsAndNumbers(txt,事件){
var charCode=(event.which)?event.which:event.keyCode
if(charCode==46){
if(txt.value.indexOf(“.”)小于0)
返回true;
其他的
返回false;
}
如果(txt.value.indexOf(“.”>0){
var txtlen=txt.value.length;
var dotpos=txt.value.indexOf(“.”);
如果((txtlen-dotpos)>2)
返回false;
}
如果(字符码>31&(字符码<48 | |字符码>57))
返回false;
返回true;
}
这将对您有所帮助。我们可以看一个预期行为的例子吗?例如,什么是允许的,什么是应该失败的?此外,您所说的“文本框”是指
还是
?2.34、2.01、2.0、289365.15这些应该是正确的,而12.23322、2.4566、2.85644666类似的任何操作都应该失败。只有onKeypressevent only在小数点后不允许超过2个值。好的,为什么不使用RegExp
?在我看来,非RegExp解决方案背后的逻辑量将需要更多的处理。我不允许用户在小数后输入超过2个值。我认为使用regex是不可能的。如果粘贴会发生什么?如果您键入的数字不带
,然后最后添加
,会发生什么情况?输入两个十进制值后,它不允许任何值,前缀我们无法更改。我们应该能够编辑前缀