Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 02.03.2018, 15:43
Профессор
Отправить личное сообщение для the_little Посмотреть профиль Найти все сообщения от the_little
 
Регистрация: 25.09.2017
Сообщений: 186

Если я внутри
$("#srochnost").on("change", function() {

напишу
alert(srochnost);
то он сработает.
А вот IF отработает, только если я снова задам переменные... Те же, что уже заданы.
Ответить с цитированием
  #12 (permalink)  
Старый 02.03.2018, 15:46
Профессор
Отправить личное сообщение для the_little Посмотреть профиль Найти все сообщения от the_little
 
Регистрация: 25.09.2017
Сообщений: 186

конкретно сейчас решается следующая задача.
Есть внешняя функция, в которой объявлены переменные (чекбоксы и селекты)
Есть внутренняя функция, которая говорит следующее
Если в первом селекте выбрана опция №2, то во втором селекте может быть только опция №3 доступна.
Ответить с цитированием
  #13 (permalink)  
Старый 02.03.2018, 15:48
Профессор
Отправить личное сообщение для the_little Посмотреть профиль Найти все сообщения от the_little
 
Регистрация: 25.09.2017
Сообщений: 186

$(function() {
	var srochnost 		= $('select[name=srochnost]').val(); 			// 1 - срочный, 2 - с проживанием
	var rejim 				= $('select[name=rejim]').val();					// 1 - дневной, 2 - ночной, 3 - суточный

	$("#srochnost").on("change", function() {

			if ( srochnost == 2 ) {
				$('#rejim-opt-null').fadeOut();
				$('#rejim-opt-day').fadeOut();
				$('#rejim-opt-night').fadeOut();
				$("#rejim [value='3']").prop("selected", "3");
			} else {
				$('#rejim-opt-null').fadeIn();
				$('#rejim-opt-day').fadeIn();
				$('#rejim-opt-night').fadeIn();
				$("#rejim [value='0']").prop("selected", "0");
			}
	});
});
Ответить с цитированием
  #14 (permalink)  
Старый 02.03.2018, 15:56
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Может проще:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<script>
$(function() {
    $('#srochnost').on('change', function() {
        if(!this.value) return;
        $('#rejim option').slice(0, -1)
                          .prop('disabled', this.value==2)
                          .end()
                          .eq(3)
                          .prop('selected', this.value==2)
    })
});
</script>

<select class="form-control" name="srochnost" id="srochnost">
    <option value="" disabled>Выбрать...</option>
    <option value="1">Срочный</option>
    <option value="2">С проживанием</option>
</select>
 
<select class="form-control" name="rejim" id="rejim">
    <option id="rejim-opt-null" value="">Выбрать...</option>
    <option id="rejim-opt-day" value="1">Дневной</option>
    <option id="rejim-opt-night"value="2">Ночной</option>
    <option id="rejim-opt-sutki" value="3">Суточный</option>
</select>

Последний раз редактировалось laimas, 02.03.2018 в 15:59.
Ответить с цитированием
  #15 (permalink)  
Старый 02.03.2018, 16:17
Профессор
Отправить личное сообщение для the_little Посмотреть профиль Найти все сообщения от the_little
 
Регистрация: 25.09.2017
Сообщений: 186

Визуально - работает.
Но при попытке алертом выдать значения двух этих селектов - выдает 0 и 0 при любом раскладе.

$(function() {

	var srochnost 		= $('select[name=srochnost]').val(); 		
	var rejim 			= $('select[name=rejim]').val();					

	$('#srochnost').on('change', function() {
	        if(!this.value) return;
	        $('#rejim option').slice(0, -1)
	                          .prop('disabled', this.value==2)
	                          .end()
	                          .eq(3)
	                          .prop('selected', this.value==2)
				
alert(srochnost + " " + rejim)

	});

});
Ответить с цитированием
  #16 (permalink)  
Старый 02.03.2018, 16:19
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Каким алертом, чего и зачем?

PS. Зачем вообще это нужно?

var srochnost = $('select[name=srochnost]').val();
var rejim = $('select[name=rejim]').val();

И почему тогда не

var srochnost = $('#srochnost').val();
var rejim = $('#rejim').val();

?

А "при любом раскладе" потому, что эти значения были получены до изменения состояния списков, и их никто не изменял.

Последний раз редактировалось laimas, 02.03.2018 в 16:23.
Ответить с цитированием
  #17 (permalink)  
Старый 02.03.2018, 17:11
Профессор
Отправить личное сообщение для the_little Посмотреть профиль Найти все сообщения от the_little
 
Регистрация: 25.09.2017
Сообщений: 186

что-то я не догоняю.

Есть селект. При выборе опции ему присваивается значение определенное.
Мне нужно с этими селектами работать дальше. Нужны их значения.

Я объявляю переменную и получаю значение нужного селекта. И это всегда работает без проблем. 20 селектов - я спокойно получаю 20 значений и делаю с ними дальше то что мне нужно.

А как только появляется эта функция, которая отвечает за скрытие и открытие не нужных опций - то я уже не получаю их значения...

точнее получаю нули в обоих списках. Как с ними дальше то работать.

Объявлена переменная
var srochnost = $('select[name=srochnost]').val();

потом проходят манипуляции со списками.

и я получаю всегда значение var srochnost = 0. Алерт я объявляю после того как прошли все изменения, а все равно ноль выводит.
Ответить с цитированием
  #18 (permalink)  
Старый 02.03.2018, 17:14
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

val надо получать каждый раз внутри функции с обработчиком change, а не один раз при загрузке
Ответить с цитированием
  #19 (permalink)  
Старый 02.03.2018, 17:16
Профессор
Отправить личное сообщение для the_little Посмотреть профиль Найти все сообщения от the_little
 
Регистрация: 25.09.2017
Сообщений: 186

Спасибо!
с переменными разобрался. все сводится к тому чтобы их по новой прописывать внутри каждой функции.
Ответить с цитированием
  #20 (permalink)  
Старый 02.03.2018, 17:17
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

the_little,
j0hnik, уже написал, но учтите, что изменение состояние списка не обязательно произойдет, поэтому в вашей задаче, может лучше опрашивать сами списки, получая их значения?

PS. И запомните и .prop("selected", "3"), и .prop("selected", "0") выберет указанную опцию, ибо и "3", и "0" вернет true, так как это строковое значение и не пустое.

Последний раз редактировалось laimas, 02.03.2018 в 17:23.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
select - большое количество option kot_k_k (X)HTML/CSS 3 08.09.2017 16:34
Содержимое option по клику на select wwonder Общие вопросы Javascript 5 18.04.2017 14:12
Значение из select option vnmslf jQuery 19 21.07.2016 12:09
Подправьте скрипт, в одну строчку :)(Выбор Option в динамическом Select) ScribaXXI Общие вопросы Javascript 1 10.02.2016 07:32
Java Script, совместная работа textarea с select option Алекс_ Элементы интерфейса 1 12.05.2015 08:13