Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: onkeypress + backspace = problem w IE
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
Jarod
Mam funkcję, która pozwala wpisywać w polu formularza tylko cyfry i kropkę. Działa prawidłowo pod Firefox i Operą. Pod IE mam problem - funkcja nie odczytuje klawisza backspace.
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();
        }
    }
}
erix
Ale kombinujesz... http://forum.php.pl/index.php?showtopic=108354
Jarod
Cytat(erix @ 14.12.2008, 22:49:23 ) *


Dostajesz pomógł bo tak też można. Ale interesuje mnie jak rozwiązać problem klawisza backspace. Może mi się kiedyś przydać.

Pozdrawiam
erix
Cytat
pod FF i IE ale Opera olewa całkowicie funckcję i można wpisać każdy znak.

A coś jest w konsoli błędów?
Jarod
Cytat(erix @ 14.12.2008, 23:18:36 ) *
A coś jest w konsoli błędów?

Nie, gdyby było to byłby to dla mnie jakiś punkt zaczepienia. Tak jak pisałem, wygooglałem, że w IE podobno nie da się użyć onkeypress i odczytać kodu ASCII klawisza backspace ponieważ ten klawisz jest zarezerwowany. Można użyć onkeydown ale opera sobie nie radzi z onkeydown.

A przecież są edytory WYSYWIG w JS więc musi się to dać jakoś napisać.
erix
Cytat
A przecież są edytory WYSYWIG w JS więc musi się to dać jakoś napisać.

To może przydałoby się pogrzebać w ich źródłach, nie? winksmiley.jpg

Spróbuj jeszcze tego: http://www.breakingpar.com/bkp/home.nsf/0/...7256AFB00141646
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.