Перейти к содержимому


Фотография
- - - - -

Слайдер. Вводимые значения.


Лучший Ответ Ichimaru , 24 October 2013 - 20:43

SmetDenis сказал(а) 24 Окт 2013 - 05:48:

Тогда тут определенно не весь код есть.
Т.к нет правок с моих последних замечаний о скрытом инпуте.

Было бы намного проще, если бы вы дали ссылку.

Я чуть выше написал что у меня не вышло выполнить ваши правки, слайдер попусту переставал отображаться.
 
Ниже, ВЕСЬ код, от корки до корки
 
 
  1. /**
  2. * Render jQueryUI slider
  3. * @param array $params
  4. * @param string $value
  5. * @param string $name
  6. * @param string $idtag
  7. * @return string
  8. */
  9. public function slider($params, $value = '', $name = '', $idtag = '')
  10. {
  11. if (!empty($value) && is_string($value)) {
  12. $value = explode('/', $value);
  13. } else {
  14. $value = array($params['min'], $params['max']);
  15. }
  16.  
  17. $this->app->jbassets->jqueryui();
  18. $this->app->jbassets->addScript('jQuery(function($){
  19. var inputMin = $("#' . $idtag . '-value-0");
  20. var inputMax = $("#' . $idtag . '-value-1");
  21. $("#' . $idtag . '-wrapper").removeAttr("slide");
  22. $("#' . $idtag . '-wrapper")[0].slide = null;
  23. $("#' . $idtag . '-wrapper").slider({
  24. "range" : true,
  25. "min" : ' . ((float)$params['min'] ? round((float)$params['min'], 2) : 0) . ',
  26. "max" : ' . ((float)$params['max'] ? round((float)$params['max'], 2) : 10000) . ',
  27. "step" : ' . ((float)$params['step'] ? round((float)$params['step'], 2) : 100) . ',
  28. "values": [' . round((float)$value['0'], 2) . ', ' . round((float)$value['1'], 2) . '],
  29. "stop" : function(event, ui) {
  30. $("#' . $idtag . '-value").val(ui.values[0] + "/" + ui.values[1]);
  31. $("#' . $idtag . '-value-0").val(numberFormat(ui.values[0], 0, ".", " "));
  32. $("#' . $idtag . '-value-1").val(numberFormat(ui.values[1], 0, ".", " "));
  33. },
  34. "slide" : function(event,ui) {
  35. $("#' . $idtag . '-value").val(ui.values[0] + "/" + ui.values[1]);
  36. $("#' . $idtag . '-value-0").val(numberFormat(ui.values[0], 0, ".", " "));
  37. $("#' . $idtag . '-value-1").val(numberFormat(ui.values[1], 0, ".", " "));
  38. }
  39. });
  40. $("#' . $idtag . '-value-0").change(function(){
  41. var value1 = jQuery("input#' . $idtag . '-value-0").val();
  42. var value2 = jQuery("input#' . $idtag . '-value-1").val();
  43. if (value1 < 0) { value1 = 0; jQuery("input#' . $idtag . '-value-0").val(0)}
  44. if(parseInt(value1) > parseInt(value2)){
  45. value1 = value2;
  46. jQuery("input#' . $idtag . '-value-0").val(value1);
  47. }
  48. jQuery("#' . $idtag . '-wrapper").slider("values",0,value1);
  49. });
  50. $("#' . $idtag . '-value-1").change(function(){
  51. var value1 = jQuery("input#' . $idtag . '-value-0").val();
  52. var value2 = jQuery("input#' . $idtag . '-value-1").val();
  53. if (value2 > 30000) { value2 = 30000; jQuery("input#' . $idtag . '-value-1").val(30000)}
  54. if(parseInt(value1) > parseInt(value2)){
  55. value2 = value1;
  56. jQuery("input#' . $idtag . '-value-1").val(value2);
  57. }
  58. jQuery("#' . $idtag . '-wrapper").slider("values",1,value2);
  59. });
  60. $("#' . $idtag . '-value").val(' . (float)$value['0'] . '+ "/" +' . (float)$value['1'] . ');
  61. });');
  62. return '<div id="' . $idtag . '-wrapper"> </div>' . "\n"
  63. . '<input id="' . $idtag . '-value-0" class="slider-value-0" value="' . $value['0'] . '"/>' . "\n"
  64. . '<input id="' . $idtag . '-value-1" class="slider-value-1" value="' . $value['1'] . '"/>' . "\n"
  65. . '<input type="hidden" id="' . $idtag . '-value" name="' . $name . '" />' . "\n";
  66. }
Перейти к сообщению


  • Закрытая тема Тема закрыта
Сообщений в теме: 16

#11 Akela

Akela

Отправлено 23 October 2013 - 11:07

А как в принципе вывести слайдер с инпутами? Дописывать инпуты в код?

В настройках фильтра я вижу только "Диапазон по числам - слайдер" и "Диапазон по числам". Комбинации этих вариантов вроде нет.


  • 0

#12 Sliapy

Sliapy

Отправлено 23 October 2013 - 11:17

Если бы она была, то о чем тогда вся эта тема? :)


Сообщение отредактировал Sliapy: 23 October 2013 - 11:17

  • 0
[color=#aa0000]Не забывайте нажимать кнопку "Вопрос Решён" под сообщением, которое решило Вашу проблему.[/color]

#13 Akela

Akela

Отправлено 23 October 2013 - 11:28

ок :)

 

Подскажите, в каком направлении думать, чтобы вместо дипазона чисел слайдер отображал словесную шкалу. Например - очень просто/просто/сложно/очень сложно.

 

В материалах в админке в этом поле стоят 4 чекбокса где ставится соответствующая галка. А заказчику именно на это поле  в фильтре нужен слайдер и ничто другое.


Сообщение отредактировал Akela: 23 October 2013 - 11:34

  • 0

#14 Ichimaru

Ichimaru

Отправлено 23 October 2013 - 19:22

SmetDenis сказал(а) 23 Окт 2013 - 08:19:

Можете дать ссылку, где посмотреть результат вашей работы?

Все что я "наработал" я скинул сюда. Разработку веду на денвере. 


  • 0

#15 SmetDenis

SmetDenis

Отправлено 24 October 2013 - 06:48

Ichimaru сказал(а) 23 Окт 2013 - 18:22:

Все что я "наработал" я скинул сюда. Разработку веду на денвере.


Тогда тут определенно не весь код есть.
Т.к нет правок с моих последних замечаний о скрытом инпуте.

Цитата

Фильтрация будет проходить на основе данных из поля


Было бы намного проще, если бы вы дали ссылку.
  • 0
JBZoo v4.0 и новый чудный мир Open Source GPL
Отключайте проверку лицензий как можно скорее!



— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.


#16 Ichimaru

Ichimaru

Отправлено 24 October 2013 - 20:43   Лучший Ответ

SmetDenis сказал(а) 24 Окт 2013 - 05:48:

Тогда тут определенно не весь код есть.
Т.к нет правок с моих последних замечаний о скрытом инпуте.

Было бы намного проще, если бы вы дали ссылку.

Я чуть выше написал что у меня не вышло выполнить ваши правки, слайдер попусту переставал отображаться.
 
Ниже, ВЕСЬ код, от корки до корки
 
 
  1. /**
  2. * Render jQueryUI slider
  3. * @param array $params
  4. * @param string $value
  5. * @param string $name
  6. * @param string $idtag
  7. * @return string
  8. */
  9. public function slider($params, $value = '', $name = '', $idtag = '')
  10. {
  11. if (!empty($value) && is_string($value)) {
  12. $value = explode('/', $value);
  13. } else {
  14. $value = array($params['min'], $params['max']);
  15. }
  16.  
  17. $this->app->jbassets->jqueryui();
  18. $this->app->jbassets->addScript('jQuery(function($){
  19. var inputMin = $("#' . $idtag . '-value-0");
  20. var inputMax = $("#' . $idtag . '-value-1");
  21. $("#' . $idtag . '-wrapper").removeAttr("slide");
  22. $("#' . $idtag . '-wrapper")[0].slide = null;
  23. $("#' . $idtag . '-wrapper").slider({
  24. "range" : true,
  25. "min" : ' . ((float)$params['min'] ? round((float)$params['min'], 2) : 0) . ',
  26. "max" : ' . ((float)$params['max'] ? round((float)$params['max'], 2) : 10000) . ',
  27. "step" : ' . ((float)$params['step'] ? round((float)$params['step'], 2) : 100) . ',
  28. "values": [' . round((float)$value['0'], 2) . ', ' . round((float)$value['1'], 2) . '],
  29. "stop" : function(event, ui) {
  30. $("#' . $idtag . '-value").val(ui.values[0] + "/" + ui.values[1]);
  31. $("#' . $idtag . '-value-0").val(numberFormat(ui.values[0], 0, ".", " "));
  32. $("#' . $idtag . '-value-1").val(numberFormat(ui.values[1], 0, ".", " "));
  33. },
  34. "slide" : function(event,ui) {
  35. $("#' . $idtag . '-value").val(ui.values[0] + "/" + ui.values[1]);
  36. $("#' . $idtag . '-value-0").val(numberFormat(ui.values[0], 0, ".", " "));
  37. $("#' . $idtag . '-value-1").val(numberFormat(ui.values[1], 0, ".", " "));
  38. }
  39. });
  40. $("#' . $idtag . '-value-0").change(function(){
  41. var value1 = jQuery("input#' . $idtag . '-value-0").val();
  42. var value2 = jQuery("input#' . $idtag . '-value-1").val();
  43. if (value1 < 0) { value1 = 0; jQuery("input#' . $idtag . '-value-0").val(0)}
  44. if(parseInt(value1) > parseInt(value2)){
  45. value1 = value2;
  46. jQuery("input#' . $idtag . '-value-0").val(value1);
  47. }
  48. jQuery("#' . $idtag . '-wrapper").slider("values",0,value1);
  49. });
  50. $("#' . $idtag . '-value-1").change(function(){
  51. var value1 = jQuery("input#' . $idtag . '-value-0").val();
  52. var value2 = jQuery("input#' . $idtag . '-value-1").val();
  53. if (value2 > 30000) { value2 = 30000; jQuery("input#' . $idtag . '-value-1").val(30000)}
  54. if(parseInt(value1) > parseInt(value2)){
  55. value2 = value1;
  56. jQuery("input#' . $idtag . '-value-1").val(value2);
  57. }
  58. jQuery("#' . $idtag . '-wrapper").slider("values",1,value2);
  59. });
  60. $("#' . $idtag . '-value").val(' . (float)$value['0'] . '+ "/" +' . (float)$value['1'] . ');
  61. });');
  62. return '<div id="' . $idtag . '-wrapper"> </div>' . "\n"
  63. . '<input id="' . $idtag . '-value-0" class="slider-value-0" value="' . $value['0'] . '"/>' . "\n"
  64. . '<input id="' . $idtag . '-value-1" class="slider-value-1" value="' . $value['1'] . '"/>' . "\n"
  65. . '<input type="hidden" id="' . $idtag . '-value" name="' . $name . '" />' . "\n";
  66. }

  • 0

#17 SmetDenis

SmetDenis

Отправлено 27 October 2013 - 10:40

Вот эта строка должна выполнятся на любые изменения в input'ах + инициализация.
  1. $("#' . $idtag . '-value").val(' . (float)$value['0'] . '+ "/" +' . (float)$value['1'] . ');
Сейчас он находится вне колбека change
  • 0
JBZoo v4.0 и новый чудный мир Open Source GPL
Отключайте проверку лицензий как можно скорее!



— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.





Click to return to top of page in style!