Необходимо немного доработать скрипт поиска
Необходимо немного доработать скрипт поиска.
Проблема в том что поиск пишет ошибку "Ничего не найдено" когда вводишь более одного слова, но по факту информацию находит (см. скриншот).
http://ploscostopie.ru/register/
var lastResFind=""; // последний удачный результат
var copy_page=""; // копия страницы в ихсодном виде
function TrimStr(s) {
s = s.replace( /^\s+/g, '');
return s.replace( /\s+$/g, '');
}
function FindOnPage(inputId) {//ищет текст на странице, в параметр передается ID поля для ввода
var obj = window.document.getElementById(inputId);
var textToFind;
if (obj) {//проверка на существование элемента
textToFind = TrimStr(obj.value);//обрезаем пробелы
} else {
alert("Введенная фраза не найдена");
return;
}
if (textToFind == "") {
alert("Вы ничего не ввели");
return;
}
if (textToFind.length
alert("Поиск не может быть настолько коротким. Пожалуйста, введите значение длиннее 1 символа");
return;
}
if( !/[A-Z]/i.test(textToFind)) //проверка на наличие латиницы и запросов, "ломающих" стиль страницы
{
if(/[а-яА-Я]/i.test(textToFind)){
//все хорошо - пускаем дальше
}
else{alert("Ничего не найдено, проверьте правильность ввода!");
return;}
}
else{alert("Ничего не найдено, проверьте правильность ввода!");
return;}
if(copy_page.length>0)
document.body.innerHTML=copy_page;
else copy_page=document.body.innerHTML;
document.body.innerHTML = document.body.innerHTML.replace(eval("/name="+lastResFind+"/gi")," ");//стираем предыдущие якори для скрола
document.body.innerHTML = document.body.innerHTML.replace(eval("/"+textToFind+"/gi"),""+textToFind+"")//Заменяем найденный текст ссылками с якорем;
if(document.getElementsByName(textToFind).length == "0"){
alert("Ничего не найдено, проверьте правильность ввода!");
return;
}
lastResFind=textToFind; // сохраняем фразу для поиска, чтобы в дальнейшем по ней стереть все ссылки
window.location = '#'+textToFind;//перемещаем скрол к последнему найденному совпадению
}