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 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

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


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