Basically what i want is if a user selects some text in a textarea and presses ctrl + b then the text within the selection should be surrounded by stars.
so basically what I want is :
1) textarea content : "hello this is some text"
2) user selects some text and presses ctrl + b "hello this is some text" (assume the bolded part is a text selection)
3) so I want the textarea content to be : "hello this *is some* text"
4) and if the user presses ctrl + z(or whatever the undo action) the textarea content should go back to being "hello this is some text"
I have tried How can i use javascript to insert text into a textarea? and Insert text into textarea at cursor position (Javascript) and similar but the issue is that on doing undo (ctrl + z) for most browsers I expect the text to go back to go to the value in step 1. but this does not happen. I understand stackoverflow implements own undo redo functionality in its editor. but I was hoping not to go to that much complexity. Have to support chrome and safari
An approach I am thinking about would be to position the cursor and issue a synthetic key event. I don't know if it will work and if it would be free of issues
execCommand
which is deprecated. See https://mcmap.net/q/108418/-execcommand-is-now-obsolete-what-39-s-the-alternative/1066234 – Probably one way would be to track the edit states by yourself (in HTML5's localstorage) and load the former state of the textarea with each CTRL Z. – Kewvar undoStates = [];
andfunction storeState()
. – Kew