Javascript 将文本字段限制为一个小数点条目(代码适用于Safari,但不适用于Firefox)
我已经修改了以下javascript代码,以帮助将文本输入限制为一个小数点,并将其上载到我的测试服务器 虽然它在Safari中有效,但在Firefox中似乎不起作用。我需要做什么修改才能使它在所有浏览器中都工作Javascript 将文本字段限制为一个小数点条目(代码适用于Safari,但不适用于Firefox),javascript,firefox,text,decimal-point,Javascript,Firefox,Text,Decimal Point,我已经修改了以下javascript代码,以帮助将文本输入限制为一个小数点,并将其上载到我的测试服务器 虽然它在Safari中有效,但在Firefox中似乎不起作用。我需要做什么修改才能使它在所有浏览器中都工作 <body> <p> <script type="text/javascript"> function OnTextNumericKeyPress(evt) { var theEvent = evt || window.even
<body>
<p>
<script type="text/javascript">
function OnTextNumericKeyPress(evt) {
var theEvent = evt || window.event;
var rv = true;
var key = (typeof theEvent.which === 'undefined') ? theEvent.keyCode : theEvent.which;
if (key && (key !== 8)) {
var keychar = String.fromCharCode(key);
var keycheck = /[.0-9]/;
if (!keycheck.test(keychar) || (keychar == '.' && evt.srcElement.value.indexOf('.') > -1)) {
rv = theEvent.returnValue = false; //for IE
if (theEvent.preventDefault) theEvent.preventDefault(); //Firefox
} else {
var number = evt.srcElement.value.split('.');
if (number.length == 2 && number[1].length > 1) {
rv = theEvent.returnValue = false; //for IE
if (theEvent.preventDefault) theEvent.preventDefault(); //Firefox
}
}
return rv;
}
function ValidateDecimal(o) {
if (o.value.length > 0) {
var objReg = /^\d+(\.\d{1,2})?$/;
if (objReg.test(o.value))
o.style.backgroundColor='';
else
o.style.backgroundColor='red';
return false;
}
}
}
</script>
<input name="txtPrice" ID="txtPrice" type="text" runat="server" MaxLength="8" onfocusout="return OnTextNumericKeyPress(event);" onBlur="return OnTextNumericKeyPress(event);" onKeyPress="return OnTextNumericKeyPress(event);" onkeyup="ValidateDecimal(this);"/>
</p>
</body>
</html>
只需组织代码。
首先,我建议您使用括号,因为它们是免费的;其次:使用缩进,它也是免费的。另一个技巧是只声明一次在执行过程中不需要重新定义的变量,否则将失去通过避免括号和缩进而获得的所有空间
从调试器中很容易看出,validateCIMAL函数未定义,这是因为它位于OnTextNumericKeyPress中:无法使用看不到的内容
下面是代码,希望现在它能按预期工作:
<script type="text/javascript">
var objReg = /^\d+(\.\d{1,2})?$/;
var keycheck = /[.0-9]/;
var rv = true;
function OnTextNumericKeyPress(evt) {
var theEvent = evt || window.event;
var key = (typeof theEvent.which === 'undefined') ? theEvent.keyCode : theEvent.which;
if (key && (key !== 8)) {
var keychar = String.fromCharCode(key);
if (!keycheck.test(keychar) ||
(keychar == '.' && evt.srcElement.value.indexOf('.') > -1)) {
rv = theEvent.returnValue = false; //for IE
if (theEvent.preventDefault) theEvent.preventDefault(); //Firefox
}else{
var number = evt.srcElement.value.split('.');
if (number.length == 2 && number[1].length > 1) {
rv = theEvent.returnValue = false; //for IE
if (theEvent.preventDefault) theEvent.preventDefault(); //Firefox
}
}
return rv;
}
}
function ValidateDecimal(o) {
if (o.value.length > 0) {
if (objReg.test(o.value)){
o.style.backgroundColor='';
}else{
o.style.backgroundColor='red';
}
return false;
}
}
</script>
<p>
<input name="txtPrice" ID="txtPrice" type="text" runat="server" MaxLength="8"
onfocusout="return OnTextNumericKeyPress(event);"
onBlur="return OnTextNumericKeyPress(event);"
onKeyPress="return OnTextNumericKeyPress(event);"
onkeyup="ValidateDecimal(this);"/>
</p>
@aztek np gl,注意复制/粘贴和多点