Googlując znalazłem info, że stosując onkeypress pod IE nie odczytam znaku backspace i że należy stosować onkeydown. Wtedy wszystko działa pod FF i IE ale Opera olewa całkowicie funckcję i można wpisać każdy znak. Czy jest sposób aby przerobić tą prostą funkcję tak aby działała prawidłowo pod FF, Operą i IE?
Kod
var floatingPointNumber = 0;
function onlyFloat(evt)
{
var keyCode;
if (window.event)
{
// DLA PRZEGLĄDARKI OPERA I IE
keyCode = window.event.keyCode;
if (keyCode == 8)
{
var sContent = document.getElementById('iMtow');
if (sContent.value.substring(sContent.value.length-1,sContent.value.length) == '.') floatingPointNumber = 0;
}
if ((keyCode > 47 && keyCode < 58) || keyCode < 32 || (keyCode == 46 && floatingPointNumber < 1))
{
if (keyCode == 46) floatingPointNumber=1;
window.event.returnValue = true;
}
else
{
window.event.returnValue = false;
}
}
else
{
// FIREFOX
keyCode = evt.which;
if (keyCode == 8)
{
var sContent = document.getElementById('iMtow');
if (sContent.value.substring(sContent.value.length-1,sContent.value.length) == '.') floatingPointNumber=0;
}
if ((keyCode > 47 && keyCode < 58) || keyCode < 32 || (keyCode == 46 && floatingPointNumber < 1))
{
if (keyCode == 46) floatingPointNumber=1;
evt.returnValue = true;
}
else
{
evt.returnValue = false;
evt.preventDefault();
}
}
}
function onlyFloat(evt)
{
var keyCode;
if (window.event)
{
// DLA PRZEGLĄDARKI OPERA I IE
keyCode = window.event.keyCode;
if (keyCode == 8)
{
var sContent = document.getElementById('iMtow');
if (sContent.value.substring(sContent.value.length-1,sContent.value.length) == '.') floatingPointNumber = 0;
}
if ((keyCode > 47 && keyCode < 58) || keyCode < 32 || (keyCode == 46 && floatingPointNumber < 1))
{
if (keyCode == 46) floatingPointNumber=1;
window.event.returnValue = true;
}
else
{
window.event.returnValue = false;
}
}
else
{
// FIREFOX
keyCode = evt.which;
if (keyCode == 8)
{
var sContent = document.getElementById('iMtow');
if (sContent.value.substring(sContent.value.length-1,sContent.value.length) == '.') floatingPointNumber=0;
}
if ((keyCode > 47 && keyCode < 58) || keyCode < 32 || (keyCode == 46 && floatingPointNumber < 1))
{
if (keyCode == 46) floatingPointNumber=1;
evt.returnValue = true;
}
else
{
evt.returnValue = false;
evt.preventDefault();
}
}
}