Javascript.RU

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

а можно принудительно задать конкретные значения в js-скрипте? через условия if?
т.е. конкретно прописать: если значение меньше 1000, то присвоить checked первой радиокнопке.
если значение меньше 3000, отметить вторую радиокнопку.
и значение меньше 5000 - третья радиокнопка.

<input type="radio" name="plan" value="{$k}" checked="checked">
<input type="text" name="sum" id="calc_sum" class="minCost" value=""/>

var plan = $('input[name=plan]'); // input с планами, values = {$k} - это счётчик планов (0,1,2)
var input = $('input.minCost'); // текстовое поле - ввести число от 100 до 5000

if (input.val() < 1000){
    (plan.val(0)).prop('checked', true);
    
}

if (input.val() < 3000){
    (plan.val(1)).prop('checked', true);
    
}

if (input.val() < 5000){
    (plan.val(2)).prop('checked', true);
    
}

этот код не работает. что нужно исправить?

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

tp-20,
var input = $('input.minCost'); // текстовое поле - ввести число от 100 до 5000
var plan = $('input[name=plan]'); // input с планами, values = {$k} - это счётчик планов (0,1,2)
plan.eq(0).prop('checked', true);
if (+input.val() > 3000){
    plan.eq(2).prop('checked', true);
}

if (+input.val() > 1000){
    plan.eq(1).prop('checked', true);

}
Ответить с цитированием
  #13 (permalink)  
Старый 30.06.2018, 19:16
Аспирант
Отправить личное сообщение для tp-20 Посмотреть профиль Найти все сообщения от tp-20
 
Регистрация: 19.06.2018
Сообщений: 42

рони,
выдаёт ошибку TypeError: this.options.values is null, ссылаясь на jquery-ui по этому адресу: https://code.jquery.com/ui/1.12.1/jquery-ui.js

jquery-ui.js (строка 14839, столбец 35)
Соответственно, скрипт не работает
Ответить с цитированием
  #14 (permalink)  
Старый 30.06.2018, 19:30
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

Сообщение от tp-20
этот код не работает. что нужно исправить?
ответ был для этой части кода, ваша ошибка не имеет отношения к исправленной части.
Ответить с цитированием
  #15 (permalink)  
Старый 05.01.2021, 23:41
Аспирант
Отправить личное сообщение для tp-20 Посмотреть профиль Найти все сообщения от tp-20
 
Регистрация: 19.06.2018
Сообщений: 42

Приветствую!
Калькулятор тот же, только слегка видоизменённый)) Поэтому новую тему создавать не буду..)

Что имеем:
двигаем ползунок - меняется значение в инпуте и в блоке "доход в день и в месяц".

Что надо:
когда вручную вводим число в инпут, в блоке "доход в день и в месяц" значения не меняются, хотя ползунок перемещается. Как это сделать?



<div>
	<input type="text" class="main-tariffs-calc-value main-tariffs-calc-value-1" value="10000">		// инпут, куда вручную вводим значение
	<div class="main-tariffs-calc-slider-1"></div>		// ползунок (слайдер)
</div>
<div>
	<div>Доход за сутки:</div>
	<div><input type="text" value="100" class="daily-value-1"> USD</div>
</div>
<div>
	<div>Доход за месяц:</div>
	<div><input type="text" value="3000" class="month-value-1"> USD</div>
</div>
<div>
	<div>Итоговый доход:</div>
	<div><input type="text" value="70000" class="total-value-1"> USD</div>
</div>


var input = $('input.main-tariffs-calc-value-1');
	var slider = $('.main-tariffs-calc-slider-1').slider({
		range: 'min',
		min: 500,
		max: 50000,
		value: [10000],
		step: 500,
		animate: 500,
		slide : function(event, ui) {
			slider_value = input.val(ui.value);   // это значение ползунка
			slider_value = Number(slider_value.val());                      // явно преобразуем его в число
			//console.log(slider_value);
			
        	daily_value = Number($('.daily-value-1').val());                // инпут для значения прибыли за 1 день
        	daily_value = slider_value * 1.8/100;
        	$('.daily-value-1').val(daily_value);                           // динамически выводим новое значение (при движении ползунка)
        	
        	month_value = ($('.month-value-1').val());                      // инпут для значения прибыли за 1 месяц
        	month_value = slider_value * 1.8/100*30;
        	$('.month-value-1').val(month_value);                           // динамически выводим новое значение (при движении ползунка)
        	
        	total_value = Number($('.total-value-1').val());                // инпут для значения итоговой прибыли
        	total_value = slider_value * 1.8/100*70 + slider_value;
        	$('.total-value-1').val(total_value);                           // динамически выводим новое значение (при движении ползунка)
		}
	});
	
	input.on('change', function() {
        slider.slider('value', $(this).val());
    });

$('.main-tariffs-calc-value-1').text($('.main-tariffs-calc-slider-1').slider('value'));
Ответить с цитированием
  #16 (permalink)  
Старый 06.01.2021, 00:34
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

tp-20,
<!DOCTYPE html>
<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
  </style>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/themes/smoothness/jquery-ui.css">
  <script src="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script>
  <script>
$(function() {
var input = $('input.main-tariffs-calc-value-1');
	var slider = $('.main-tariffs-calc-slider-1').slider({
		range: 'min',
		min: 500,
		max: 50000,
		value: [10000],
		step: 500,
		animate: 500
	});
    $('.main-tariffs-calc-slider-1').on( "slide", function( event, ui ) {
    if(ui) slider_value = input.val(ui.value);   // это значение ползунка
			slider_value = Number(input.val());                      // явно преобразуем его в число
			//console.log(slider_value);
        	daily_value = Number($('.daily-value-1').val());                // инпут для значения прибыли за 1 день
        	daily_value = slider_value * 1.8/100;
        	$('.daily-value-1').val(daily_value);                           // динамически выводим новое значение (при движении ползунка)
        	month_value = ($('.month-value-1').val());                      // инпут для значения прибыли за 1 месяц
        	month_value = slider_value * 1.8/100*30;
        	$('.month-value-1').val(month_value);                           // динамически выводим новое значение (при движении ползунка)
        	total_value = Number($('.total-value-1').val());                // инпут для значения итоговой прибыли
        	total_value = slider_value * 1.8/100*70 + slider_value;
        	$('.total-value-1').val(total_value);                           // динамически выводим новое значение (при движении ползунка)
    } );
	input.on('change', function() {
        slider.slider('value', $(this).val());
        $('.main-tariffs-calc-slider-1').trigger('slide');
    });
$('.main-tariffs-calc-value-1').text($('.main-tariffs-calc-slider-1').slider('value'));
});
  </script>
</head>
<body>
<div>
	<input type="text" class="main-tariffs-calc-value main-tariffs-calc-value-1" value="10000">		// инпут, куда вручную вводим значение
	<div class="main-tariffs-calc-slider-1"></div>		// ползунок (слайдер)
</div>
<div>
	<div>Доход за сутки:</div>
	<div><input type="text" value="100" class="daily-value-1"> USD</div>
</div>
<div>
	<div>Доход за месяц:</div>
	<div><input type="text" value="3000" class="month-value-1"> USD</div>
</div>
<div>
	<div>Итоговый доход:</div>
	<div><input type="text" value="70000" class="total-value-1"> USD</div>
</div>
</body>
</html>
Ответить с цитированием
  #17 (permalink)  
Старый 06.01.2021, 10:42
Аспирант
Отправить личное сообщение для tp-20 Посмотреть профиль Найти все сообщения от tp-20
 
Регистрация: 19.06.2018
Сообщений: 42

Рони, спасибо, как всегда молниеносный точный ответ!

Вы вынесли slide отдельно, чтобы можно было поставить условие if?
$('.main-tariffs-calc-slider-1').on( "slide", function( event, ui ){


И вы ещё добавили trigger - за что он здесь отвечает? или что выполняет? спасибо
input.on('change', function() {
        slider.slider('value', $(this).val());
        $('.main-tariffs-calc-slider-1').trigger('slide');
    });
Ответить с цитированием
  #18 (permalink)  
Старый 06.01.2021, 11:09
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

Сообщение от tp-20
Вы вынесли slide отдельно, чтобы можно было поставить условие if?
нет, чтобы можно было использовать вашу функцию и при движении ползунка и при изменении инпута, trigger('slide') запускает эту функцию, но нет обьекта движения "ui" поэтому добавлен if, когда изменяется значение в инпуте в ручную, эта строка с if не работает.
Ответить с цитированием
  #19 (permalink)  
Старый 13.01.2021, 09:41
Аспирант
Отправить личное сообщение для tp-20 Посмотреть профиль Найти все сообщения от tp-20
 
Регистрация: 19.06.2018
Сообщений: 42

Калк и код тот же.
Подскажите, как сделать изменение значений при вводе в input?
Сейчас значения меняются по нажатию на Enter или когда input теряет фокус.
А нужно - непосредственно при вводе цифр в input

Менял change на onkeypress и на oninput - без изменений

input.on('change', function() {
        slider.slider('value', $(this).val());
        $('.main-tariffs-calc-slider-1').trigger('slide');
});


Скриншот для наглядности:

Последний раз редактировалось tp-20, 13.01.2021 в 09:55.
Ответить с цитированием
  #20 (permalink)  
Старый 13.01.2021, 10:26
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

Сообщение от tp-20
Менял change на onkeypress и на oninput - без изменений
input
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
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