【发布时间】:2014-06-06 22:39:09
【问题描述】:
我想在文本框中输入小数点。我想通过在小数点后输入超过 2 位来限制用户。我已经在 Keypress 事件中编写了实现该功能的代码。
function validateFloatKeyPress(el, evt) {
var charCode = (evt.which) ? evt.which : event.keyCode;
if (charCode != 46 && charCode > 31 && (charCode < 48 || charCode > 57)) {
return false;
}
if (charCode == 46 && el.value.indexOf(".") !== -1) {
return false;
}
if (el.value.indexOf(".") !== -1)
{
var range = document.selection.createRange();
if (range.text != ""){
}
else
{
var number = el.value.split('.');
if (number.length == 2 && number[1].length > 1)
return false;
}
}
return true;
}
<asp:TextBox ID="txtTeamSizeCount" runat="server" onkeypress="return validateFloatKeyPress(this,event);" Width="100px" MaxLength="6"></asp:TextBox>
代码可以运行,但问题是:如果我输入 ".75" 然后将其更改为 "1.75",这是不可能的。唯一的方法是完全删除它,然后输入 "1.75"。如果文本框中的小数点后已有 2 位数字,则会出现此问题。我施加的条件是
a) 出现小数点后,它必须至少有 1 或 2 位数字。例如 .75 或 .7 或 10.75 或 333.55 或 333.2 被接受。但不是 .753 或 12.3335
b) 在小数点之前,用户不必输入数值。用户还必须能够输入整数。
你能告诉我可能是什么问题吗?
谢谢,
小伙子
【问题讨论】:
标签: javascript validation keypress