У меня есть следующий Javascript код приспособлен, чтобы помочь ограничить ввод текста в одной десятичной точки, а загружены на мой тестовый сервер на cogwheelmedia.net/Survey/numerickey.phpОграничение текстового поля для одной записи десятичной точки (код работает в Safari, но не Firefox)
Несмотря на то, что он работает в Safari, он, похоже, не работает в Firefox. Какие изменения я должен сделать, чтобы заставить его работать во всех браузерах?
<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>
Спасибо. Это сработало :) – aztek
@aztek np gl, обратите внимание с копией/вставкой и несколькими точками –