我目前正在使用以下代码将在textarea中输入的数据更改为输入到我网站上的段落元素的html。
当用户失去对textarea元素的关注时会进行更改,但是我想添加例外。目前我的代码将在[b] [/ b](bb代码标签)中的textarea中包装所选文本。但是,当您单击调用此函数的链接时,textarea会失去焦点并更改为段落。
如何为焦点添加例外?这样当单击textEdit类的任何元素被认为是异常并且没有运行替换textarea的代码时?
$("textarea").live('focusout', function (e) {
var $target = $(event.target);
if ( $target.is(".textEdit") ) {
} else {
var itemContent = $(this).val();
itemContent = htmlStrip(itemContent);
itemContent = itemContent.replace(/\n/g, "<br/>"); // New lines
//itemContent = itemContent.replace(/\s/g, " "); // Spaces
// Formatting replacements
itemContent = itemContent
.replace(/\[b\]/gi, "<b>")
.replace(/\[\/b\]/gi, "</b>")
.replace(/\[i\]/gi, "<i>")
.replace(/\[\/i\]/gi, "</i>")
.replace(/\[s\]/gi, "<s>")
.replace(/\[\/s\]/gi, "</s>")
$(this).replaceWith("<p class='notes'>"+ itemContent +"</p>");
}
});
谢谢,一如既往的建议!
编辑:3月31日星期六上午10:30,BST
我也尝试过:
if ($("#bold").is(":focus"))
获取活动元素$(document.activeElement),当您单击任何内容时,它只返回BODY。真的坚持这个人会喜欢任何关于如何继续的帮助或建议!
答案 0 :(得分:2)
我会以超时的方式做到这一点......
var renderHandler;
$("textarea").live('focusout', function (e) {
var currentNote = this;
renderHandler = setTimeout( function(){ renderNote(currentNote); }, 50);
});
// handle exceptions
$('#bold, #other_exception_element, .and_yet_another_exception').live('focusin', function (e) {
clearTimeout(renderHandler);
});
function renderNote( note ){
var itemContent = $(note).val();
itemContent = htmlStrip(itemContent);
itemContent = itemContent.replace(/\n/g, "<br/>"); // New lines
//itemContent = itemContent.replace(/\s/g, " "); // Spaces
// Formatting replacements
itemContent = itemContent
.replace(/\[b\]/gi, "<b>")
.replace(/\[\/b\]/gi, "</b>")
.replace(/\[i\]/gi, "<i>")
.replace(/\[\/i\]/gi, "</i>")
.replace(/\[s\]/gi, "<s>")
.replace(/\[\/s\]/gi, "</s>");
$(note).replaceWith("<p class='notes'>"+ itemContent +"</p>");
}