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)

Dilettante_Pro 25.07.2017 18:35

artem55555p,
не работает даже вариант пост 34 при просмотре с этого сайта?

Тогда подумайте над пост 36

artem55555p 25.07.2017 18:43

не увидел сразу в посте 34: value="?"
что это за знак вопроса?

artem55555p 25.07.2017 18:46

я без него пробовал

Dilettante_Pro 25.07.2017 18:57

artem55555p,
Там еще и
$('#pp').prop('disabled', isNaN(v));

есть...

artem55555p 25.07.2017 19:00

да это видел. еще думал зачем там nan... щас попробую еще

artem55555p 25.07.2017 19:15

не, все равно зараза не работает(

laimas 25.07.2017 19:34

Все маемся? Почему нельзя просто запрещать вместо прятать? Проверяйте, работает на планшете, можно ли на нем выбрать то, что не позволено первым списком?

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
<style>

</style> 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<script>
$(function() {
    $("#sdelka").change(function() {
        $( ".hd1").prop('disabled', +this.value);
        $( ".hd2").prop('disabled', !+this.value);
        $('#pp').val('').prop('disabled', !this.value);
    });
});
</script> 
</head>
<body>

<select id="sdelka" class="sel" name="rent_buy">
    <option value="">Select</option>
    <option value="0">000</option>
    <option value="1">111</option>
</select>

<select disabled="disabled" id="pp" class="sel" name="type">
    <option value="">Select</option>
    <option class="hd1" value="1">1111</option>
    <option class="hd1" value="2">1111</option>
    <option class="hd1" value="3">1111</option>
    <option class="hd2" value="4">2222</option>
    <option class="hd2" value="5">2222</option>
    <option class="hd2" value="6">2222</option>
    <option class="hd2" value="7">2222</option>
    <option class="hd2" value="8">2222</option>
</select>

</body>
</html>

artem55555p 26.07.2017 09:05

да, так работает. а вот скрывать не получается...

laimas 26.07.2017 09:30

Не на всех элементах можно делать все что желается. Хотите нечто неординарное, значит костомизация и вытворяйте.

Dilettante_Pro 26.07.2017 10:07

artem55555p,

Не знаю, как на планшете, но на телефоне с хромом мой вариант прекрасно работает

artem55555p 26.07.2017 10:48

да я знаю)) и мой тоже работает)) а вот на ipad не хочет хоть ты тресни...

j0hnik 26.07.2017 14:11

Цитата:

Сообщение от artem55555p (Сообщение 459648)
да я знаю)) и мой тоже работает)) а вот на ipad не хочет хоть ты тресни...

Обычно на Ipad больше с версткой заморочек, скрипты как правило работают стабильно.

artem55555p 26.07.2017 16:38

ну у двух человек смотрел, не работает(((

artem55555p 26.07.2017 17:20

в сафари это тоже не работает

artem55555p 26.07.2017 17:24

в общем эта проблема только на ios и сафари

artem55555p 26.07.2017 17:42

как я прочитал, display none в сафари не работает....

artem55555p 26.07.2017 18:09

пробовал hide и show, та ж песня. везде работает, а в сафари нет

laimas 26.07.2017 18:31

artem55555p,
SELECT это системный элемент, а как им распоряжаться будет браузер, это его личное дело. Хотите секциями, делайте костомизированный список. Можете и готовый плагин использовать.

artem55555p 26.07.2017 18:39

да именно селект говорят надо((

laimas 26.07.2017 19:12

Цитата:

Сообщение от artem55555p
да именно селект говорят надо

А никто вас и не заставляет его удалять. Просто он будет работать в фоне, а пользователь будет выбирать в том, что его представляет.

artem55555p 26.07.2017 19:18

сделал так:
$("#sdelka").change(function() {
        var v = this.value;
        var store = [];  
        store[0] = {1:'Вилла/Дом',2:'Кондо/Апартаменты',3:'Бунгало'};
        store[1] = {4:'Вилла/Дом',5:'Кондо/Апартаменты',6:'Проект',7:'Коммерческая',8:'Земля'};
        $('#pp').html('<option value="">Тип объекта</option>');
        if(store[v]){
            for(i in store[v]){
                $('#pp').append('<option value="'+i+'">'+store[v][i]+'</option>');
            }
        }
    });


работает. но теперь вопрос, как мне вместо допустим
$('#pp').html('<option value="">Тип объекта</option>');

вставить:
$('#pp').html('<option value=""><?php echo Yii::t("common", "Property type")?></option>');

так не работает.
http://c2n.me/3Ms0JjE
т.е. комментрий html пишет

laimas 26.07.2017 19:22

artem55555p,
никак, нет на клиенте РНР. Не этим

var store = [];
store[0] = {1:'Вилла/Дом',2:'Кондо/Апартаменты',3:'Бунгало'};
store[1] = {4:'Вилла/Дом',5:'Кондо/Апартаменты',6:'Проект',7:'Ком мерческая',8:'Земля'};

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

artem55555p 26.07.2017 19:26

ну мне надо это вставить. пытался строкой, не вышло тоже...

artem55555p 26.07.2017 19:29

http://c2n.me/3Ms1gbf
$('#pp').html('<option value="">'+"<?php echo Yii::t('common', 'Property type')?>"+'</option>');


как сделать, чтобы в верстке комментария не была, а был php? Сейас оно комментируется автоматом.

laimas 26.07.2017 19:38

Цитата:

Сообщение от artem55555p
$('#pp').html('<option value="">'+"<?php echo Yii::t('common', 'Property type')?>"+'</option>');

Ну что за хрень. У вас второй список формируется непосредственно и со вставками

<?php echo Yii::t('common', 'Villa/Home')?>

и т.п. В выводе страницы, где-то в самом низу, сделайте

<script>
var store = [
    {'1': <?=Yii::t('common', 'Villa/Home')?>, '2': .....},
    {'1': <?=Yii::t('common', 'Villa/Home')?>, '2': .....} 
];
</script>


А обработчик просто использует этот объект. Зачем же ради объявления одного объекта размещать на странице js-сценарии? Обработчик вообще может быть в подключаемом файле.

PS. Лучше бы было, чтобы не монотонно <?=Yii::t('common', 'Villa/Home')?>, <?=Yii::t('common', 'Villa/Home')?>, ... а циклом заготовить массив описывающий второй список, и затем поместить его в вывод как json_encode($array).

artem55555p 26.07.2017 19:50

честно говоря не понял....(

laimas 26.07.2017 19:56

artem55555p,
чего не понятного? Обработчик должен оперировать объектом описывающим данные для списка, формируя теги опций по этим данным и вставляя их в список.

Если уж и оперировать готовым html, то опишите его сразу двумя элементами массива, в котором готовые теги опций с РНР вставками.

Но в любом из этих случаев это должно быть сделано при выводе страницы.

artem55555p 26.07.2017 19:59

можете пример привести?

laimas 26.07.2017 20:08

Цитата:

Сообщение от artem55555p
можете пример привести?

Пример чего? Вот тут ваш пример, нужно только таким же образом описать это не в код select, который будет пустой, а в массив если html опций готовых или массив объектов если только данные для опций.

artem55555p 27.07.2017 09:15

ну я делал, у меня не получилось....

laimas 27.07.2017 09:53

Печально, но делать придется самому. Ищите код формирующий шапку с меню, удаляйте в нем вывод в тег select, перенаправив его в вывод формирующий js-объект, который будет использоваться в обработчике.


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