Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   не работают скрипты на планшете и телефоне. (https://javascript.ru/forum/dom-window/69872-ne-rabotayut-skripty-na-planshete-i-telefone.html)

artem55555p 24.07.2017 19:20

не работают скрипты на планшете и телефоне.
 
Есть скрипт:
$("#sdelka").click(function() {
        if($( "#sdelka" ).val() == 0){
            $( ".hd1").css('display', 'block');
            $( ".hd2").css('display', 'none');
			$('#pp').attr('disabled',false);	
        }else{
			$('#pp').attr('disabled',false);
            $( ".hd2").css('display', 'block');
            $( ".hd1").css('display', 'none');
        }
    });

это зависимость двух select
<div class="col-md-3 col-sm-6 col-xs-12">
					<select id="sdelka" class="sel" name="rent_buy">
						<option value=""><?php echo Yii::t('common', 'Sale/Rent')?></option>
						<option value="0"><?php echo Yii::t('common', 'Rent')?></option>
						<option value="1"><?php echo Yii::t('common', 'Sale')?></option>
					</select>
				</div>
				<div class="col-md-3 col-sm-6 col-xs-12">
					<select disabled="disabled" id="pp" class="sel" name="type">
						<option value=""><?php echo Yii::t('common', 'Property type')?></option>
						<option class="hd1" value="1"><?php echo Yii::t('common', 'Villa/Home')?></option>
						<option class="hd1" value="2"><?php echo Yii::t('common', 'Condo/Apartments')?></option>
						<option class="hd1" value="3"><?php echo Yii::t('common', 'Bungalo')?></option>
						<option class="hd2" value="4"><?php echo Yii::t('common', 'Villa/Home')?></option>
						<option class="hd2" value="5"><?php echo Yii::t('common', 'Condo/Apartments')?></option>
						<option class="hd2" value="6"><?php echo Yii::t('common', 'Project')?></option>
						<option class="hd2" value="7"><?php echo Yii::t('common', 'Commercial')?></option>
						<option class="hd2" value="8"><?php echo Yii::t('common', 'Land')?></option>
					</select>
				</div>

кто что подскажет? на компьютере все работает.
рабочий пример тут:
http://site.artem55555p.ru/ru/main/index
вот эти два select http://c2n.me/3Mo4c1n

laimas 24.07.2017 19:32

Во-первых так:

$("#sdelka").change(function() {
        var v = +this.value;
        $( ".hd1").css('display', ['block', 'none'][v]);
        $( ".hd2").css('display', ['none', 'block'][v]);
        //$('#pp').attr('disabled',false);$('#pp').prop('disabled', false); зачем это задавать, если и в противном случае тоже false, ошибки нет, может так:
        $('#pp').prop('disabled', v); //то есть все таки изменяет состояние?   
});


Во-вторых что не работает?

artem55555p 24.07.2017 19:37

у менЯ значение 0 и 1
вы скинули код, теперь если выбрать где значение 1 селект имеет disabled

artem55555p 24.07.2017 19:37

на телефоне и планшете это не работало

laimas 24.07.2017 19:41

Цитата:

Сообщение от artem55555p
теперь если выбрать где значение 0 селект имеет disabled

Да, если нужно обратное, значит так - $('#pp').prop('disabled', !v);

Вы посмотрите на свой код, у вас в обеих условиях $('#pp').attr('disabled',false);, а мне тем боле откуда знать, чего вам вообще нужно.

artem55555p 24.07.2017 19:44

мне нужно чтобы при выборе 1 или 0 disabled убирался

laimas 24.07.2017 20:02

Цитата:

Сообщение от artem55555p (Сообщение 459463)
мне нужно чтобы при выборе 1 или 0 disabled убирался

А когда тогда чтобы был? Еще раз, вы гляньте на свой код, у вас опции имеют три значения: пустое, 0 и 1. Условие вашего кода определяет если = 0, то false, иначе также false. Нахрена тогда вообще что-то менять?

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

И может убрать опцию с пустым значением? Не видно, чтобы она что-то определяла.

artem55555p 25.07.2017 09:11

мне нужно чтобы при выборе 1 или 0 disabled убирался. выбрал 0 в select отображены .hd1 поля с этим классом. выбрал 1 с .hd2

artem55555p 25.07.2017 09:17

var v = +this.value;
        $( ".hd1").css('display', ['block', 'none'][v]);
        $( ".hd2").css('display', ['none', 'block'][v]);
		if(v == 0){
			$('#pp').prop('disabled', v);
		}


так сделал

laimas 25.07.2017 09:30

А если не равно 0, тогда что?

artem55555p 25.07.2017 10:06

ну сейчас работает как надо site.artem55555p.ru и на телефоне работает все.

artem55555p 25.07.2017 10:58

может у кого-то есть другие варианты?

laimas 25.07.2017 11:00

Цитата:

Сообщение от artem55555p
есть другие варианты?

Чего? У списка обрабатывают событие не щелчка, чего было, а изменение в нем.

artem55555p 25.07.2017 11:00

ну я делал проверку на 1, но оно и так работало...

artem55555p 25.07.2017 11:01

ну сейчас на телефоне работает, а на планшете нет(((

laimas 25.07.2017 11:13

Цитата:

Сообщение от artem55555p
ну я делал проверку на 1, но оно и так работало.

Вот что вы делали $("#sdelka").click(function(), а это ересь. А что там проверяется, это вторично.

Цитата:

Сообщение от artem55555p
на телефоне работает, а на планшете нет

Браузер->Консоль->Что?

artem55555p 25.07.2017 11:16

у меня change, а не click

$("#sdelka").change(function() {
        var v = +this.value;
        $( ".hd1").css('display', ['block', 'none'][v]);
        $( ".hd2").css('display', ['none', 'block'][v]);
		if(v == 0){
			$('#pp').prop('disabled', v);
		}
      
	});


к сожалению планшет у заказчика, у меня нет планшета и я не могу отследить это..(

artem55555p 25.07.2017 13:02

может кто-то что-то подсказать?

laimas 25.07.2017 13:06

Цитата:

Сообщение от artem55555p
у меня change, а не click

Сейчас да, а раньше то чего было.

artem55555p 25.07.2017 13:08

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

laimas 25.07.2017 13:11

Цитата:

Сообщение от artem55555p
можете подсказать в чем проблема?

Проблема именно чего?

artem55555p 25.07.2017 13:17

все поля сразу показываются
http://clip2net.com/s/3Mpb29C
т.е.
$( ".hd1").css('display', ['block', 'none'][v]);
$( ".hd2").css('display', ['none', 'block'][v]);

это сразу block

laimas 25.07.2017 13:21

Цитата:

Сообщение от artem55555p
все поля сразу показываются и изначально поле не disabled

А разве об этом вам не задавался вопрос? Спрашивалось же, что за странная логика в задании disabled false, а вернее полное ее отсутствие.

Список по умолчанию должен быть недоступен, а на самом деле как?

artem55555p 25.07.2017 13:28

а как тогда?
$("#sdelka").change(function() {
        var v = +this.value;
        $( ".hd1").css('display', ['block', 'none'][v]);
        $( ".hd2").css('display', ['none', 'block'][v]);
		
		$('#pp').prop('disabled', v);
		
	});


если так, то при выборе:
<select id="sdelka" class="sel" name="rent_buy">
<option value=""><?php echo Yii::t('common', 'Sale/Rent')?></option>
 <option value="0"><?php echo Yii::t('common', 'Rent')?></option>
<option value="1"><?php echo Yii::t('common', 'Sale')?></option>
</select>

это если выбираю:
<option value="1"><?php echo Yii::t('common', 'Sale')?></option>
то все равно disabled

artem55555p 25.07.2017 13:29

а value трогать нельзя. только так, пусто, 0 и 1

laimas 25.07.2017 13:33

Цитата:

Сообщение от artem55555p
а как тогда?

Понятия не имею, а как должно быть задавал вопрос не раз, остался без ответа.

Но если первый список управляет доступностью второго, а по умолчанию надо полагать "по жалобе" он должен быть недоступен, то:

<select id="pp" ..... disabled>

artem55555p 25.07.2017 13:35

не, <select id="sdelka" class="sel" name="rent_buy"> тут не должно быть disabled он всегда доступен. меняется второй селект

artem55555p 25.07.2017 13:37

ну так это и стоит же.. disabled="disabled"

artem55555p 25.07.2017 13:38

вот, http://site.artem55555p.ru/ru здесь все работает нормально на пк, и телефоне. а на планшете не хочет.

laimas 25.07.2017 13:44

Сдается мне, что вы путаете понятие disabled с понятиями block и none.

artem55555p 25.07.2017 13:45

вы предлагаете disabled="disabled" изменить на disabled просто??

laimas 25.07.2017 13:58

Цитата:

Сообщение от artem55555p
вы предлагаете disabled="disabled" изменить на disabled просто?

Я предлагаю изменить disabled="disabled" на disabled="fuck u, wither and do not rock". )

Пофигу, что будет написано в значении данного атрибута, хоть абвгд, хоть пустая строка, хоть просто disabled -элемент будет недоступен. Понимаете - недоступен! То есть по отношению к списку его нельзя будет раскрыть. А display: block/none, это сделать видимым/невидимым элемент списка. Проблемы с чем на планшете: а) - не зависимо от установки disabled список все равно можно раскрыть (что вряд ли), б) - не зависимо от выбора в первом списке все опции второго списка видны (что скорее всего)? И коли второе, то браузер на планшете игнорирует данные определения.

artem55555p 25.07.2017 14:02

И коли второе, то браузер на планшете игнорирует данные определения.
Ответить с цитированием - ну да:( я и спрашиваю как это исправить можно))))

Dilettante_Pro 25.07.2017 14:12

Может, так?
<div class="col-md-3 col-sm-6 col-xs-12">
   <select id="sdelka" class="sel" name="rent_buy">
      <option value="?">Sale/Rent?</option>
      <option value="0">Rent</option>
      <option value="1">Sale</option>
  </select>
</div>
<div class="col-md-3 col-sm-6 col-xs-12">
  <select disabled="disabled" id="pp" class="sel" name="type">
      <option value="">Property type?</option>
      <option class="hd1" value="1">Villa/Home</option>
      <option class="hd1" value="2">Condo/Apartments</option>
      <option class="hd1" value="3">Bungalo</option>
      <option class="hd2" value="4">Villa/Home</option>
      <option class="hd2" value="5">Condo/Apartments</option>
      <option class="hd2" value="6">Project</option>
      <option class="hd2" value="7">Commercial</option>
      <option class="hd2" value="8">Land</option>
   </select>
</div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script>
$("#sdelka").change(function() {
        var v = +this.value;
        $( ".hd1").css('display', ['block', 'none'][v]);
        $( ".hd2").css('display', ['none', 'block'][v]);
       $('#pp').prop('disabled', isNaN(v));    
});
</script>

laimas 25.07.2017 14:15

Не знаю, я не считаю планшет компьютером, по крайней мере мне такого не нужно, у меня нет. Что за браузер на планшете чужом тем более не знаю и есть ли какие способы профиксить его поведение.

Самым простым и логичным, это не стиль опций менять, а делать их недоступными, то есть:

$("#sdelka").change(function() {
        $( ".hd1, .hd2").prop('disabled', +this.value);
        $('#pp').prop('disabled', !this.value);
});

Dilettante_Pro 25.07.2017 17:38

Вообще-то по нормальному надо делать два селекта второго уровня и показывать из них нужный в соответствии с выбором в селекте первого уровня.

artem55555p 25.07.2017 18:09

а это может из-за браузера быть? т.к. ни один ни Ваш ни мой вариант не работает именно на ПЛАНШЕТЕ

Dilettante_Pro 25.07.2017 18:18

artem55555p,
Цитата:

Сообщение от artem55555p
не работает именно на ПЛАНШЕТЕ

А на нем браузер-то есть? Какой?
Что значит - не работает?

artem55555p 25.07.2017 18:22

хром. та же проблема. при клике на один селект, во втором селекте показываются все пункты. хотя вот вы же и писали:
$( ".hd1").css('display', ['block', 'none'][v]);
$( ".hd2").css('display', ['none', 'block'][v]);
но это тоже не работает((

artem55555p 25.07.2017 18:23

я не знаю, почему пункты не убираются... 2й день сижу


Часовой пояс GMT +3, время: 11:13.