Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #21 (permalink)  
Старый 12.05.2021, 22:44
Аспирант
Отправить личное сообщение для tp-20 Посмотреть профиль Найти все сообщения от tp-20
 
Регистрация: 19.06.2018
Сообщений: 53

Сообщение от Dilettante_Pro Посмотреть сообщение
Подскажите пожалуйста, как радиокнопки переделать на выпадающий список select?

<select name="plan" id="plan">
    <option value="1000">Start</option>
    <option value="3000">Medium</option>
    <option value="5000">Pro</option>
</select>


вот тут радиокнопки, начиная с 12й строки:
<link rel="stylesheet" href="https://code.jquery.com/ui/1.10.3/themes/south-street/jquery-ui.css">
<style>
   ul li {
    display: inline-block; 
    margin-right: 5px; 
    padding: 3px; 
   }
</style>
<form method="post" name="calc" onsubmit="recalc(); return false;">
  <div>
    <ul>
      <li><label class="radio"><input type="radio" name="plan" value="1000" checked ><div>START</div></label>
      </li>
      <li><label class="radio"><input type="radio" name="plan" value="3000" ><div>STANDART</div></label>
      </li>
      <li><label class="radio"><input type="radio" name="plan" value="5000" ><div>PREMIUM</div></label>
      </li>
  </ul>
</div>
            
<div>
  <input name="sum" id="calc_sum" type="text" class="minCost" value=""/>
  <div class="slider"></div>
</div>
<div>
  <input name="calc_btn" value="Рассчитать" type="submit">
</div>

</form>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
  <script src="https://code.jquery.com/ui/1.10.3/jquery-ui.js"></script>
<script>
jQuery(document).ready(function($) {
  var plan = $('input[name=plan');
  var input = $('input.minCost');
  var slider = $('.slider').slider({
    range: 'max',
    min: 100,
    max: 5000,
    value: 100,
    step: 10,
    animate: 300,
    slide: function(event, ui) {
      input.val(ui.value);
      checkPlan();
    }
  });

  input.val(slider.slider('value'));
  checkPlan();

//  input.on('change', function() {
//    slider.slider('value', $(this).val());
//  });
  plan.on('change', function() {
        slider.slider('value', $(this).val());
        input.val($(this).val());
  });
  
  input.on('change', function() {

	var value1=input.val();
    if (value1 > 5000) { value1 = 5000; input.val(5000)}
    if (value1 < 100) { value1 = 100; input.val(100)}

	slider.slider('value',value1);
        checkPlan();	
});
// фильтрация ввода в поля
	jQuery('input').keypress(function(event){
		var key, keyChar;
		if(!event) var event = window.event;
		
		if (event.keyCode) key = event.keyCode;
		else if(event.which) key = event.which;
	
		if(key==null || key==0 || key==8 || key==13 || key==9 || key==46 || key==37 || key==39 ) return true;
		keyChar=String.fromCharCode(key);
		
		if(!/\d/.test(keyChar))	return false;	
	});

   function checkPlan() {
     plan.each(function(i, elem) {
          if(+input.val() <= +elem.value) {
             $(elem).prop('checked', true);
             return false;  
          }
     });
   }
});
</script>
....
Ответить с цитированием
  #22 (permalink)  
Старый 12.05.2021, 23:08
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

Сообщение от tp-20
как радиокнопки переделать на выпадающий список select?
долго и упорно думать над строкой 34 ... и что-то там удалить.
Ответить с цитированием
  #23 (permalink)  
Старый 13.05.2021, 00:15
Аспирант
Отправить личное сообщение для tp-20 Посмотреть профиль Найти все сообщения от tp-20
 
Регистрация: 19.06.2018
Сообщений: 53

Сообщение от рони Посмотреть сообщение
строкой 34 ... и что-то там удалить.
не допёрло. пробовал и через option, и классы им присвоил..
выручай!
Ответить с цитированием
  #24 (permalink)  
Старый 13.05.2021, 00:34
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

tp-20,
var plan = $('[name=plan]');
Ответить с цитированием
  #25 (permalink)  
Старый 13.05.2021, 01:06
Аспирант
Отправить личное сообщение для tp-20 Посмотреть профиль Найти все сообщения от tp-20
 
Регистрация: 19.06.2018
Сообщений: 53

рони,
этот вариант я тоже пробовал, но select не меняется.
https://jsfiddle.net/tps20/qdym1uvb/2/ - тут накидал, чтобы проще ориентироваться.
Ответить с цитированием
  #26 (permalink)  
Старый 13.05.2021, 11:19
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

Сообщение от tp-20
но select не меняется.
<!DOCTYPE html>
<html lang="ru">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <link rel="stylesheet" href="https://code.jquery.com/ui/1.10.3/themes/south-street/jquery-ui.css">
    <form method="post" name="calc" onsubmit="recalc(); return false;">
        <div>
            <select name="plan" id="plan">
                <option value="1000">Start</option>
                <option value="3000">Medium</option>
                <option value="5000">Pro</option>
            </select>
        </div>
        <div>
            <input name="sum" id="calc_sum" type="text" class="minCost" value="" />
            <div class="slider"></div>
        </div>
        <div>
            <input name="calc_btn" value="Рассчитать" type="submit">
        </div>
    </form>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
    <script src="https://code.jquery.com/ui/1.10.3/jquery-ui.js"></script>
    <script>
        jQuery(function($) {
            var plan = $('[name=plan]');
            var input = $('input.minCost');
            var slider = $('.slider').slider({
                range: 'max',
                min: 1000,
                max: 5000,
                value: 1000,
                step: 10,
                animate: 300,
                slide: function(event, ui) {
                    input.val(ui.value);
                    checkPlan();
                }
            });
            input.val(slider.slider('value'));
            checkPlan();
            plan.on('change', function() {
                slider.slider('value', this.value);
                input.val(this.value);
            });
            input.on('change', function() {
                var value = this.value;
                if (value > 5000) value = 5000;
                if (value < 1000) value = 1000;
                this.value = value;
                checkPlan();
                slider.slider('value', value);
            });
            $('input').keypress(function(event) {
                var key, keyChar;
                if (!event) var event = window.event;
                if (event.keyCode) key = event.keyCode;
                else if (event.which) key = event.which;
                if (key == null || key == 0 || key == 8 || key == 13 || key == 9 || key == 46 || key == 37 || key == 39) return true;
                keyChar = String.fromCharCode(key);
                if (!/\d/.test(keyChar)) return false;
            });
            function checkPlan() {
                var value = input.val();
                if (value == 1000 || value == 3000 || value == 5000) plan.val(value)
            }
        });
    </script>
</body>
</html>
Ответить с цитированием
  #27 (permalink)  
Старый 13.05.2021, 12:57
Аспирант
Отправить личное сообщение для tp-20 Посмотреть профиль Найти все сообщения от tp-20
 
Регистрация: 19.06.2018
Сообщений: 53

рони,
да, спасибо! то что надо.
подскажи пожалуйста ещё один момент.
нужно указать диапазон value: например от 1000 до 2999, от 3000 до 4990, и от 4991 до 5000 - для примера.

я так понял, это на строке 68 нужно изменить условие для value - должны быть диапазоны, чтобы при движении ползунка значения в селекте чётко переключались.

что-то типа такого:
if ((value >= 1000 && value <= 2999) || 
    (value >= 3000 && value <= 4990) || 
    (value >= 4991 && value <= 5000)) plan.val(value)
Ответить с цитированием
  #28 (permalink)  
Старый 13.05.2021, 13:29
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

tp-20,
function checkPlan() {
                var value = +input.val();
                if (value < 2300) value = 1000;
                else if (value < 3600)  value = 3000;
                else value = 5000;
                plan.val(value)
            }
Ответить с цитированием
  #29 (permalink)  
Старый 27.07.2021, 21:01
Аспирант
Отправить личное сообщение для tp-20 Посмотреть профиль Найти все сообщения от tp-20
 
Регистрация: 19.06.2018
Сообщений: 53

добрый вечер.
вопрос по слайдеру.

как убрать второй ползунок?
т.е. range не нужен. просто нужен одиночный ползунок.
Спасибо!

<!DOCTYPE html>
<html lang="ru">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <link rel="stylesheet" href="https://code.jquery.com/ui/1.10.3/themes/south-street/jquery-ui.css">


<div id="slider"></div>

<input type="text" name="from" id="from" value="" placeholder="from" />
<input type="text" name="to" id="to" value="" placeholder="to" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>

    <script src="https://code.jquery.com/ui/1.10.3/jquery-ui.js"></script>
    <script>

myData = [ 1,2,4,6,8,10,20,30,40,50,100,200,300,400,500 ];

		slider_config = {
			range: true,
			min: 0,
			max: myData.length - 1,
			step: 1,
			slide: function( event, ui ) {
                    // Set the real value into the inputs
                    $('#from').val( myData[ ui.values[0] ] );
                    $('#to').val( myData[ ui.values[1] ] );
			},
            create: function() {
                    $(this).slider('values',0,0);
                    $(this).slider('values',1,myData.length - 1);
            }
		};

		// Render Slider
		$('#slider').slider(slider_config);
    </script>

<style>
* {
    font-family:Arial;
    font-size:20px;
}
body {
    padding:20px;
}
#slider { margin:20px }
</style>
</body>
</html>

Последний раз редактировалось tp-20, 27.07.2021 в 21:05.
Ответить с цитированием
  #30 (permalink)  
Старый 27.07.2021, 21:30
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

tp-20,

slider_config = {
            min: 0,
            max: myData.length - 1,
            step: 1,
            slide: function( event, ui ) {
                    $('#from').val( myData[ ui.value ] );
           },
            create: function(event, ui) {
                    $('#from').val( myData[0] );
            }
        };
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
radio button внутри петли и jquery Юльув jQuery 5 09.11.2010 16:10
Баг Firefox: по F5 перескакивает radio при динамическом добавлении в DOM input Atoll Events/DOM/Window 6 22.06.2010 18:25
jQuery и Input - > radio yu_ jQuery 3 02.04.2010 00:43
jquery и input text tazododu jQuery 3 19.02.2010 09:55
jQuery watermark input field jquery_watermark Armen jQuery 4 29.12.2009 23:15