Выпадающие списки, которые видны при печати

При печати веб-страницы с тегом select на ней, выпадающий список будет выглядеть так же как и на экране.

Конечно, в таком виде он совершенно не нужен и бесполезен. Он может даже скрывать совершенно необходимые детали, важные для понимания того, что напечатано (например, набор параметров продукта).

Увы, я не знаю по настоящему простого и красивого способа обойти этот недостаток. Один из наилучших вариантов - продублировать содержимое каждого select`а неупорядоченным списком. И скрыть эти списки для всех устройств, кроме принтера. На мой взгляд, это наиболее простой и удобный подход к решению проблемы.

И так, сформулируем, что должен сделать скрипт (используя jQuery):

  1. Выберем все select`ы на странице.
  2. вставим div с вложенным ul после каждого select`а.
  3. Переберем все option`ы в каждом select`е и добавим соответствующие li в ul.
  4. Сделаем div невидимым для всех типов устройств, кроме принтера.
  1. $(function(){
  2. $("select").each(function(i){
  3. var $el = $(this);
  4. var $options = $el.find("option");
  5. var ul = "<div class='print-select'><ul>";
  6. $options.each(function() {
  7. var $t = $(this);
  8. if($t.attr('selected'))
  9. ul += "<li class='selected'>"+$t.text()+"</li>";
  10. else
  11. ul += "<li>"+$t.text()+"</li>";
  12. });
  13. ul += "</ul></div>";
  14. $el.after(ul);
  15. });
  16. });

Пример

Как вариант, такой список можно подготавливать на стороне сервера.

Rate It! (Average 5.00, 2 votes)

Related Posts

2 Responses to Выпадающие списки, которые видны при печати

  1. gravatar

    Есть пара замечаний: 1. перенести логику с js на серверный скрипт.
    2. С точки зрения производительности, эффективнее производить меньше операций с домом, поэтому сначала сформируйте строчку, а потом в конце сделайте один append!

  2. gravatar

    @Piumosso,
    1. переносить логику на сервер не всегда имеет смысл
    2. спасибо, поправил

Leave a Reply

  • Ваша сессия закончилась.

Mail will not be published