【发布时间】:2011-12-08 16:07:47
【问题描述】:
最重要的是 JavaScript:
function encodeInput(editor) {
theText = editor.val();
theText = theText.replace(/\*\*\*(.*?)\*\*\*/, '<strong><i>$1</i></strong>', 'g');
theText = theText.replace(/\*\*(.*?)\*\*/, '<strong>$1</strong>', 'g');
theText = theText.replace(/\*(.*?)\*/, '<i>$1</i>', 'g');
console.log(theText);
$('#preview').html(theText);
}
$(function() {
$editor = $('#editor');
$editor.keyup(function() {
encodeInput($(this));
});
});
经过测试并且效果很好(我确实需要 \*\*\* 部分,否则它不起作用)。
无论如何,进入主菜
问题
因为我使用的是keyup,所以脚本的响应速度不是很快(例如,只有在用户松开按键后它才会“运行”)。我希望它的行为更像 StackOverflow 上的编辑器,按下键并立即响应。
我尝试使用keydown 和keypress,但似乎val() 属性在运行时没有更新,所以我无法真正知道更新后的值。
简而言之
如何让它更具响应性,以便当用户按下某个键时,预览会自动更新??
【问题讨论】:
-
两个建议:使用
<em>而不是<i>,如果您想添加适当的markdown 支持,请考虑将markdown-python 移植到JavaScript 而不是使用正则表达式。它使用插件、解析树等的方法非常好,而且更清洁 IMO。 -
@downvoter 你能解释一下-1吗?
标签: javascript jquery