Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #21 (permalink)  
Старый 14.10.2015, 11:46
Аспирант
Отправить личное сообщение для steepfox Посмотреть профиль Найти все сообщения от steepfox
 
Регистрация: 24.02.2011
Сообщений: 66

Думаю, что разработчик зависнет от такого вопроса

Мне просто нужно, чтобы запоминался выбор, этих пунктов)

"И эту компактность (наборы) запросто можно описать единственным числом." - как это можно сделать, следуя из моего примера?)
Ответить с цитированием
  #22 (permalink)  
Старый 14.10.2015, 12:23
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Я вам уже рассказывал как - проверять состояния пришедших параметров запроса, и по условию выбирать опцию. Либо на клиенте получаете из url параметры (location.search.substring(1)), ищите списках такие же, можно разделив значение опции по ? и взять второй элемент (.split('?')[1]), можно рег. выражением. Можно полностью сравнивать url со значением, если позволяет. Нашли, выбрали опцию.

Сообщение от steepfox
как это можно сделать, следуя из моего примера?
К вашему примеру это отношения не имеет, это надо полностью переделать подход к описанию параметров фильтра. Рассказывать все не буду, ибо все равно впустую будет. Но, компьютеры работают исключительно на двоичной арифметике, в которой единица (бит) может принимать два состояния, два бита - 4, 3 бита - 8, 4 бита - 16, и т.д. 2 в степени n. Описание различных наборов, это представление из N-бит бит сдвинутых влево на N разрядов, тогда двойным словом (32 разряда) можно описать столько состояний фильтра и сортировки, что даже в вашей базе не найдется столько.
Ответить с цитированием
  #23 (permalink)  
Старый 15.10.2015, 13:52
Аспирант
Отправить личное сообщение для steepfox Посмотреть профиль Найти все сообщения от steepfox
 
Регистрация: 24.02.2011
Сообщений: 66

Спасибо за ответ.)

"Можно полностью сравнивать url со значением, если позволяет."

Как подобное можно реализовать?
Ответить с цитированием
  #24 (permalink)  
Старый 15.10.2015, 15:55
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Как было написано ранее. Свойство location.href возвращает полный url. Обращение к свойству href тега А также вернет полный url, даже если в нем указан относительный путь, например href="?a=1", включая пртокол, домен, путь и параметры запроса.
Свойство же опции вернет полный url только в случае, если он так прописан.
Ответить с цитированием
  #25 (permalink)  
Старый 16.10.2015, 14:43
Аспирант
Отправить личное сообщение для steepfox Посмотреть профиль Найти все сообщения от steepfox
 
Регистрация: 24.02.2011
Сообщений: 66

Как все сложно.. А на моем примере можно как-то реализовать все это дело?
Ответить с цитированием
  #26 (permalink)  
Старый 16.10.2015, 15:59
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Какой еще пример нужен. Если используется jQ, то по загрузке страницы обойти опции списка сравнивая их значения с url.

$('selector').children('[value='+location.href+']').prop('selected', 1)


где selector, селектор вашего списка, по которому к нему можно обратиться - имя класса или идентификатора. Значение опции в этом случае должно быть абсолютным путем. Но можно сравнивать только по параметрам запроса, как говорилось выше.
Ответить с цитированием
  #27 (permalink)  
Старый 18.10.2015, 16:02
Аспирант
Отправить личное сообщение для steepfox Посмотреть профиль Найти все сообщения от steepfox
 
Регистрация: 24.02.2011
Сообщений: 66

Спасибо за ответ. Смотрите, данный код можно ли разместить на странице, которая была приведена выше?:

<?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>
Ответить с цитированием
  #28 (permalink)  
Старый 18.10.2015, 16:10
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

А почему не разработчику своему этот вопрос?

Я вообще не понимаю нахрена нужны две функции, которые делают одно и тоже, за небольшим косметическим различием. И с этим вопросом к разработчику.

Последний код, это непосредственно прописанный html-код списка, если вы хотите заменить его вызовом функции, то по причине описанной выше - к разработчику, лично я бы выбросил это к чертовой матери.

Вам уже было показано как это сделать на клиенте, если вы не можете разобраться на сервере.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выбор и сброс выбора в select Veterinar Элементы интерфейса 4 08.09.2014 18:52
Обработка выбора select systemiv Общие вопросы Javascript 2 20.11.2012 01:44
select для выбора цвета someLogin Элементы интерфейса 0 10.10.2011 20:15
Пользовательский скрипт для выбора option в select по умолчанию justalittleperson Элементы интерфейса 1 04.10.2010 06:13
Вставка текста в textarea после выбора select option modelisto Общие вопросы Javascript 2 14.10.2009 19:27