2013-04-18 2 views
0

У меня есть веб-страница html/php (файл называется searchresults.php), который импортирует jquery mobile. При входе на страницу, URL-адрес, как правило, что-то вроде«onclick» кнопки во всплывающем меню работает только один раз

www.domain.com/searchresults.php?&sort="off"&max="5" 

В этом примере сортировки выключен и отображаются только 5 пунктов. На этой странице есть кнопка, которая открывает всплывающее окно, где я хочу, чтобы пользователь мог изменить эти параметры. Я использую встроенное всплывающее окно jquery. В этом всплывающем меню вы можете включить/отключить «сортировку», и вы можете ввести новый максимум. На всплывающем окне «ok», чтобы подтвердить ваши новые настройки. Это выглядит так:

<a href="" id="okbutton" data-role="button" onclick="sortAgain();">OK</a> 

The sortAgain(); функция JavaScript выглядит следующим образом:

function sortAgain(); 
{ 
    //some code to get the necessary variables// 
    ... 

    //change the href of the button so you reload the page 
    document.getElementById("okbutton").href = "searchresults.php" + "?keyword=" + var1 + "&sort=" + var2 + "&max=" + var3 
} 

Так, в основном, прямо перед кнопкой «ОК» переходит на другую страницу, я поставил его HREF страницы, на которой она должна ориентироваться тоже.

Эта схема работает, и файл searchresults.php извлекается снова с сервера и повторно интерпретируется (с новыми переменными в URL-адресе).

Однако, если я попытаюсь изменить настройки снова после его изменения один раз, всплывающее окно просто ничего не делает! Другими словами, href кнопки ok на всплывающем окне остается пустым, а функция javascript sortAgain() не вызывается. Я не понимаю, почему он впервые называет метод onclick, но затем отказывается снова его называть?

Я предполагаю, что это связано с тем фактом, что popup html-код является неотъемлемой частью файла searchresult.php, и что hrefing на ту же страницу дает проблемы? Всплывающее окно - это чистый html, во всплывающем коде не участвует php. и снова, он работает отлично в первый раз.

+0

Загружается ли он через ajax? Вы упомянули стандартный переход, но зачем беспокоиться об изменении 'href' на полностраничном перемещении (если вы не используете AJAX)? –

+0

Я не думаю, что использую ajax? Файл php извлекает данные из базы данных, в зависимости от параметров сортировки и макс. Всплывающее окно получает некоторый пользовательский ввод, а затем переходит в searchresult.php? & Sort ... снова, но с новыми параметрами. Когда файл php перезагружается, поскольку переменные разные, результаты поиска будут обновляться. – user1884155

ответ

0

Вы должны проверить, как присоединить события через JavaScript. Смотрите здесь: javascript attaching events

+0

Это просто общая обратная связь по хорошей практике программирования или использование onclick() внутри тегов html, которые, как известно, прослушиваются? – user1884155

+0

Это будет зависеть от того, какой браузер вы тестируете ... Любая мобильная вещь или настольный Chrome/Firefox/etc.? – pmayer

0

Вы должны использовать «pageinit» событие при настройке обработчиков кликов в JQM: http://api.jquerymobile.com/category/events/

Вот пример того, как связать обработчик щелчка при первой загрузке страницы.

$(document).on("pageinit", "#that-page", function() { 
    $('#okbutton').on("click", "#that-page", function(e) { 
     $(this).attr("href", "searchreslts.php"); 
    }); 
}); 
+0

Это просто общая обратная связь по хорошей практике программирования или использование onclick() внутри тегов html, которые, как известно, прослушиваются? – user1884155

+0

Да, в общем, считается лучшей практикой использования [ненавязчивого javascript] (http://en.wikipedia.org/wiki/Unobtrusive_JavaScript) http://stackoverflow.com/questions/4478795/what-is-unobtrusive-javascript- в-непрофессионала-терминов –

Смежные вопросы