Ну примерно в таком ключе надо работать. Код не тестировал. Часть кода нужна для поддержки IE8. В вебкит почему то не получается напрямую установить pseudoRule.style.content ..
<script>
(function(){
var head = document.head || document.getElementsByTagName('head')[0];
head.appendChild(document.createElement('style'));
var styleSheet = document.styleSheets[document.styleSheets.length - 1];
if (styleSheet.insertRule) {
styleSheet.insertRule('span:before {}');
} else {
styleSheet.addRule('span:before', '');
}
var pseudoRule = (styleSheet.cssRules || styleSheet.rules)[0];
this.setPseudoContent = function(content) {
// почему-то style.content не работает в хроме.
pseudoRule.style.cssText = 'content:' + ['"','"'].join(content);
}
})();
</script>
<input onkeydown="setPseudoContent(value)" />
Pseudo:<span></span>