/ / jQuery: ajout d'exceptions pour concentrer l'événement - jquery, exception, gestion des exceptions, focus, zone de texte

jQuery: ajout d'exceptions à un événement de focalisation - jquery, exception, gestion des exceptions, focus, zone de texte

J'utilise actuellement le code suivant pour changer les données saisies dans une zone de texte en html entré dans un élément de paragraphe sur mon site Web.

Des modifications sont apportées lorsque l'utilisateur perd le focus sur leélément textarea, cependant je voudrais ajouter des exceptions. Pour le moment, j'ai du code qui encapsulera le texte sélectionné dans la zone de texte en [b] [/ b] (balises de code bb). Cependant, lorsque vous cliquez sur le lien qui appelle cette fonction, la zone de texte perd le focus et se transforme en paragraphe.

Comment puis-je ajouter des exceptions au focusout? de sorte que lorsqu'un élément avec la classe textEdit est cliqué, cela est considéré comme l'exception et que le code pour remplacer la zone de texte ne soit pas exécuté?

$("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, " &nbsp;"); // 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>");

}

});

Merci, comme toujours pour tout conseil!

Edit: sam 31 mars 10h30 BST

J'ai aussi essayé:

if ($("#bold").is(":focus"))

et obtenir l'élément actif $ (document.activeElement) qui ne renvoie BODY que lorsque vous cliquez sur quoi que ce soit. Vraiment vraiment coincé avec celui-ci aimerait toute aide ou conseil sur la façon de procéder!

Réponses:

2 pour la réponse № 1

Je le ferais avec des temps morts ...

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, " &nbsp;"); // 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>");
}