PDA

View Full Version : سوال: مشکل در کد هایلایت کردن کلمه جستجو شده



moferferi
جمعه 15 مهر 1390, 00:16 صبح
سلام
من توی url خودم یک پارامتر به نام hl دارم.که مقدارش مساوی با کلمه جستجو شده در سایته و اونا از دیتابیس با خودش میاره.
توی پروژه یه فایل جاوا دارم که کد های زیر داخلشه

function getParam(name) {
name = name.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]");
var regexS = "[\\?&]" + name + "=([^&#]*)";
var regex = new RegExp(regexS);
var results = regex.exec(window.location.href);
if (results == null)
return "";
else
return unescape(results[1]);
}


jQuery.fn.highlight = function (str, classname) {
return this.each(function () {
this.innerHTML = this.innerHTML.replace(
new RegExp(str, "g"),
"<span class=\"" + classname + "\">" + str + "</span>"
);

});
};



و در قسمت aspx فرم هم کد زیر را رای فراخوانی تابع هایلایت کردن پارمتر hl استفاده میکنم

script language="javascript"> $("#dvshow").highlight(getParam("hl"), "h");
</script>


.با حروف انگلیسی مشکلی نداره ولی با کلمات فارسی مشکل داره .
البته من از در خروجی تابع getparam از دستور unescape هم استفاده کردم.ولی باز هم کلمات فارسی را خرچنگ قورباغه نشون میده.
در ضمن این را هم بگم که تابع هایلایت بالا از کتابخانه جی کوئری هستش.

مثلا اگه توی خط دوم تابع هایلایت مقدار getparam را alert کنید کلمات فارسی را به هم ریز نشون میده.
دوستان اگه کسی تو این زمینه تجربه داره کمکم کنه.

با تشکر

exlord
جمعه 15 مهر 1390, 12:54 عصر
به جای unscape از decodeURIComponent استفاده کنین حل میشه ...