Думаю, что разработчик зависнет от такого вопроса :)
Мне просто нужно, чтобы запоминался выбор, этих пунктов) "И эту компактность (наборы) запросто можно описать единственным числом." - как это можно сделать, следуя из моего примера?) |
Я вам уже рассказывал как - проверять состояния пришедших параметров запроса, и по условию выбирать опцию. Либо на клиенте получаете из url параметры (location.search.substring(1)), ищите списках такие же, можно разделив значение опции по ? и взять второй элемент (.split('?')[1]), можно рег. выражением. Можно полностью сравнивать url со значением, если позволяет. Нашли, выбрали опцию.
Цитата:
|
Спасибо за ответ.)
"Можно полностью сравнивать url со значением, если позволяет." Как подобное можно реализовать? |
Как было написано ранее. Свойство location.href возвращает полный url. Обращение к свойству href тега А также вернет полный url, даже если в нем указан относительный путь, например href="?a=1", включая пртокол, домен, путь и параметры запроса.
Свойство же опции вернет полный url только в случае, если он так прописан. |
Как все сложно.. А на моем примере можно как-то реализовать все это дело?
|
Какой еще пример нужен. Если используется jQ, то по загрузке страницы обойти опции списка сравнивая их значения с url.
$('selector').children('[value='+location.href+']').prop('selected', 1) где selector, селектор вашего списка, по которому к нему можно обратиться - имя класса или идентификатора. Значение опции в этом случае должно быть абсолютным путем. Но можно сравнивать только по параметрам запроса, как говорилось выше. |
Спасибо за ответ. Смотрите, данный код можно ли разместить на странице, которая была приведена выше?:
<?php function formation_html_select_from_mas($mas,$on_choose_value=false,$choose_value="",$on_add_begin=false,$value_add_begin=-1,$name_add_begin="Выберите...",$return_only_html = false) { $html=""; $selected=false; foreach ($mas as $key => $value) { $element_choose=""; if ($on_choose_value && $choose_value == $key) { $element_choose="selected='selected'"; $selected=true; } $html.="<option $element_choose value='$key'>$value</option>"; } if ($on_add_begin) { $html="<option value='$value_add_begin'>$name_add_begin</option>".$html; } if ( !$return_only_html ) $rez=array("html"=>$html,"selected"=>$selected); else $rez = $html; return ($rez); } function formation_html_select_from_mas_rows($mas,$key_value,$key_name,$on_choose_value=false,$choose_value="",$on_add_begin=false,$value_add_begin=-1,$name_add_begin="Выберите...",$return_only_html = false) { // если $key_value равняется false, то для значения option будет браться ключ соответствующей строки массива $html=""; $selected=false; foreach ($mas as $key_row => $one_row) { $key= ( ( $key_value === false ) ? $key_row : $one_row[$key_value] ); $value=$one_row[$key_name]; $element_choose=""; if ($on_choose_value && $choose_value == $key) { $element_choose="selected='selected'"; $selected=true; } $html.="<option $element_choose value='$key'>$value</option>"; } if ($on_add_begin) { $html="<option value='$value_add_begin'>$name_add_begin</option>".$html; } if ( !$return_only_html ) $rez=array("html"=>$html,"selected"=>$selected); else $rez = $html; return ($rez); } И далее в опциях, к примеру, вместо value="{$obj_doska->base_url_page.$add_param_url_2}", будет value="1" <select name="sel" onchange="document.location=this.value"> <option value="{$obj_doska->base_url_page.$add_param_url_2}">Обычная сортировка</option> <option value="{$obj_doska->base_url_page}?{$add_param_url_1}sort=date&tsort=desc" {$obj_doska->name_sort == "date" && $obj_doska->type_sort == "desc" ? $on_class : ""}">Новые</option> <option value="{$obj_doska->base_url_page}?{$add_param_url_1}sort=date&tsort=asc" {$obj_doska->name_sort == "date" && $obj_doska->type_sort == "asc" ? $on_class : ""}">Старые</option> <option value="{$obj_doska->base_url_page}?{$add_param_url_1}sort=cost&tsort=desc" {$obj_doska->name_sort == "cost" && $obj_doska->type_sort == "desc" ? $on_class : ""}">Дороже</option> <option value="{$obj_doska->base_url_page}?{$add_param_url_1}sort=cost&tsort=asc" {$obj_doska->name_sort == "cost" && $obj_doska->type_sort == "asc" ? $on_class : ""}">Дешевле</option> </select> |
А почему не разработчику своему этот вопрос?
Я вообще не понимаю нахрена нужны две функции, которые делают одно и тоже, за небольшим косметическим различием. И с этим вопросом к разработчику. Последний код, это непосредственно прописанный html-код списка, если вы хотите заменить его вызовом функции, то по причине описанной выше - к разработчику, лично я бы выбросил это к чертовой матери. Вам уже было показано как это сделать на клиенте, если вы не можете разобраться на сервере. |
Часовой пояс GMT +3, время: 01:37. |