You can't trigger but can achieve the same effect :) An you will definitely deal with Ranges to make your code cross browser :)
jQuery HowTo Resource - http://jquery-howto.blogspot.com On Fri, Jan 9, 2009 at 7:43 PM, Ricardo Tomasi <ricardob...@gmail.com> wrote: > > You can't actually trigger a keypress, only it's event listeners. I > think you'll have to deal with "ranges": > https://developer.mozilla.org/En/DOM/Range > > On Jan 9, 4:03 am, RSol <viacheslav.rud...@gmail.com> wrote: >> To replace ':)' to image I see 2 variants: >> When I detect ':)' I: >> 1. Emulate two BackSpace and execCommand('InsertImage',false,img) >> 2. Get all text from '#editor', then String.replace(/:\)/g,img), then >> put that in '#editor', then need moove cursor to the end of '#editor'. >> I dont know how to move cursor to the end of editor. >> >> I select 1st variant, and try emulate BackSpace key. Using $ >> ('#editor').trigger("keypress", ........) I cant do this - I dont ckow >> how! >> I find: >> >> var evt = document.createEvent("KeyEvents"); >> evt.initKeyEvent( >> "keypress", // in DOMString typeArg, >> true, // in boolean canBubbleArg, >> true, // in boolean cancelableArg, >> null, // in nsIDOMAbstractView viewArg, Specifies >> UIEvent.view. This value may be null. >> false, // in boolean ctrlKeyArg, >> false, // in boolean altKeyArg, >> false, // in boolean shiftKeyArg, >> false, // in boolean metaKeyArg, >> 8, // in unsigned long keyCodeArg, >> 0); // in unsigned long charCodeArg); >> $('#editor')[0].dispatchEvent(evt); >> >> it's work in FF, but dont work in IE. >> >> > Ah, I think I see the issue. Am I right in assuming that you don't >> > want to simulate the backspace, but detect it? >> >> I need to simulate the BackSpace >> >> > Also, how are you keeping track of the replacement? It seems to me >> > that you could do yourself a big favor and make what the user enters >> > not what you show the user, so when they delete a smiley, you can just >> > remove the whole thing?