ugrás a tartalomhoz

onKeyPress backspace nem működik ie-ben

Nutec · 2009. Dec. 13. (V), 13.42
Sziasztok!

A következő problémában kérném a segítségeteket:

Van egy input mezőm, az ebbe írt tartalmat javascripttel (onKeyPress eseménykezelő) íratom ki egy divbe. Ez eddig rendben is van. A gond a törlésnél jelentkezik. Ugye backspace lenyomására nem csak a formból, de a div-ből is el kellene tűnjön az utolsó karakter.
Ezt úgy oldottam meg, hogy ha a billentyű ascii kódja "8" akkor vágjon le egy karaktert a szöveg végéből. Minden rendes böngészőben működik is, kivéve persze IE, melynél ugyanis az onKeyPress nem érzékeli a vezérlőbillentyűk lenyomását.

Tudtok-e valamilyen megoldást ez ügyben?

Előre is köszi!

Nutec

Próbálkoztam onKeyDown-nal is, de annál meg az ékezetes és egyéb karakterek megjelenítése nem jó, valamint mindent nagybetűvel ír!
 
1

Hú, asszem megoldottam..

Nutec · 2009. Dec. 13. (V), 14.53
Elnézést mindenkitől, de asszem sikerült megoldanom a problémát. Kissé sufnis lett de működik: készítettem egy onkeydown-ra induló függvényt, amely csak a "8"-as karakter leütését kezeli. Így már az ie-is érzékeli, ha backspace-t nyomok!:)

Azért, ha valakinek van egy használhatóbb megoldása azt szívesen fogadom!

Üdv.:

Nu7ec
2

re

toxin · 2009. Dec. 13. (V), 15.50
úgy emlékszem, hogy a keydown és keyup-ok ASCII-t küldenek módosítótól függetlenül (shiftKey, ctrlKey, altKey, meg a metaKey ami ie alatt nyemá) a keyCode-al, és ez vmennyire bőngészőfüggetlen. Ellenberger a keypress, itt fx, chrome, safari a charCode-ot használja, keyCode ilyenkor üres, ie és az opera meg a keyCode-ot (charCode-ot meg nem ismerik), és szintén ASCII kód megyen.

szóval ha már megvan az event akkor

if (typeof event.charCode == "number"){
return event.charCode;
} else {
return event.keyCode;
}


charCode number ill. undefined lehet (ahol nincs támogatva). Szóval karaktereknél a fenti kód kéne, nem karaktereknél meg a keydown szvsz (az ESC-az keypress, erre emlékszem mert be...ptam :) ), és mivel nemkaraktereknél a keydown ismétlődik a végén egy keyup-al versus a karaktereknél ismétlődő keydown keypress ... és a végén egy keyup-al, szerintem kivitelezhető ... de azért írd meg a végső megoldást ;).

üdv Csaba

ui: karakterkódból String.fromCharCode()-al lesz karakter :)
ui2: http://www.yuiblog.com/blog/2009/04/27/video-ppk-jsevents/ bővebben a témáról
3

Köszi szépen!

Nutec · 2009. Dec. 13. (V), 21.36
Köszi, hogy vetted a fáradtságot és leírtad! Bár asszem a js eseménykezelők vs. keyCode || charCode összes kombóját kipróbáltam délelőtt. :)
Bár én úgy vettem észre, hogy a keyCode-ot mindegyik támogatja, charCode csak a bill.kombóknál kell általában, bár safariban nem próbáltam. A charCode-ot az ie tényleg nem nagyon kultiválja:).

A megoldás viszont az eseménykezelő megváltoztatásával jött. Kb. azt csináltam amit leírtál, de egyenlőre csak backspace-re állítottam be (onmousedown-t).
Kész megoldást még nem írnék be, mert szerintem van még mit javítanom rajta:). A charCode-ot még át kellene néznem, mert csak tessék-lássék maradt időm rá, de nagy betűkre szükségem lesz :).

Az alkalmazás amúgy sem túl releváns az oldal szempontjából. Csak a felhasználó űrlapba beírt nevét írná be egy mintalevélben kihagyott üres helyre(a regisztráltaknál meg amúgy is a felhasználónév az alapértelmezett), de jó alkalomnak tűnik kissé jobban beleásnom magam a témába, hátha készítek még hasonló alkalmazást, ahol nagyobb hangsúlyt kap a karakterbevitel.

Ki tudja, lehet le is írom majd a témában összegyűjtött ismereteimet:D!
Magyarul úgysem nagyon találtam összefoglalót a témáról!

Üdv.: Nu7ec

ui: a String.fromCharCode()-ra szükségem volt, hogy működjön a beírás:), azért köszi:)