I have a .NET MVC page with a list of items that each have
<%: %>
encoded descriptions in the rel
.
I want to be able to search for all items with a rel
that contains my search query.
One of the fields has a value with htmlentities rel='Décoration'
I type "Décoration" in the search box, let jQuery search for all elements that have a 'rel' attribute that contains (indexOf != -1) that value:
no results!
Why? because Décoration != Décoration
.
What would be the best solution to compare these two? (Has to work for all special accented characters, not just é
)
P.S. (I tried escape/unescape on both sides, also tried the trick to append it to a div and then read it as text, this replaces dangerous stuff, but doesn't replace é (it doesn't have to because it's valid in utf-8 anyway))
Since the é
and like are html entities, you can set the html content of a temporary div with the garbled string, and retrive the decoded string using the text content of the element. The browser will do the decoding work for you.
function searchInRel(needle) {
return $('[rel]').filter(function(i,e) {
var decodedText = $('<div/>').html(e.attr('rel')).text();
return (decodedText.indexOf(needle) != -1);
};
}
function decodeEntities(text) {
var tempDiv = document.getElementById('tempDiv');
tempDiv.innerHTML = text;
return tempDiv.textContent;
}
If you serve your pages with UTF-8 encoding, you won't need to use entities for all the accented characters. Problem solved.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With