Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Выполнение сценария до/после загрузки страницы (https://javascript.ru/forum/events/16857-vypolnenie-scenariya-do-posle-zagruzki-stranicy.html)

br00ks 25.04.2011 18:45

Выполнение сценария до/после загрузки страницы
 
Приветствую, помогите пожалуйста решить проблему с отображением div элемента. Не был уверен как описать проблему в заголовке, так что постараюсь описать как можно подробнее здесь.
Ситуация следующая: Поиск. есть формачка сверху каждой странички, и соответственно на странице поиска. Необходимо реализовать отображение сообщения (локализованного для пользователя) если ввод меньше 3 символов. Что я сделал:

1. Поместил див контейнер с лейблом который отображает текст на основне текущего lid параметра. - сделано на jsp и кастом тэг библиотеке.
2. Если ввод меньше чем 3 символа сделать див видимым. если больше скрыть. - сделано на js
3. Если на сервер пришел запрос длинной меньше трех символов, отправить обратно не обновляя. - сделано на тех же servlets, jsp, struts 1.3.8,...
4. Проблема в том что если я пытаюсь выполнить поиск с главной страницы то js дойдя до места где нужно отобразить див его конечно не видет (страница на которой спрятан див - поиск...там либо результаты либо сообщение об ошибке).
Так вот, как мне выполнить отображение div после того как страница вернулась с пустыми результатами с сервера(т.е. на сервер пришел запрос поискать что то меньше 3 символов, сервер отдал пустую страницу (базовую) без результатов(сам поиск выполнен не был))?

вот мой кусок js кода:

function search(form){
var searchForm = document.getElementById(form);
var searchFieldValue = getElementsByClassName(searchForm,'search')[0].value;
var errMsgDiv = document.getElementById("ErrMsgLessThanThree");

if(!searchFieldValue == ''){
searchForm.currentPage.value="1";
if (searchFieldValue.length < 3) {
if (errMsgDiv == null) {
console.log("111");
searchForm.submit();
window.onload=showValidationErrorMsg();
} else {

console.log("222");
showValidationErrorMsg();
}
} else {
hideValidationErrorMsg();
searchForm.submit();
window.onload=hideValidationErrorMsg();
}
}
}

function hideValidationErrorMsg() {
var errMsgDiv = document.getElementById("ErrMsgLessThanThree");

if (errMsgDiv.style.visibility = "visible") {
errMsgDiv.style.visibility = "hidden";
}
}

function showValidationErrorMsg() {
var errMsgDiv = document.getElementById("ErrMsgLessThanThree");

if (errMsgDiv.style.visibility = "hidden") {
errMsgDiv.style.visibility = "visible";
}
}

// Not supported in IE6 so we have to manually define

function getElementsByClassName(node, classname)
{
var a = [];
var re = new RegExp('\\b' + classname + '\\b');
var els = node.getElementsByTagName("*");
for(var i=0,j=els.length; i<j; i++)
if(re.test(els[i].className))a.push(els[i]);

return a;
}

Я не программист на JavaScript, знаю его постольку поскольку раз в 5лет с ним сталкиваешься. Надеюсь на вашу помощь в выделеном фрагменте. Спасибо.

br00ks 27.04.2011 17:46

Тема закрыта


Часовой пояс GMT +3, время: 05:41.