На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! ПРАВИЛА РАЗДЕЛА
Прежде чем задать вопрос, зайдите в раздел FAQ, возможно там уже есть ответ на него.
Если вы хотите вставить код в сообщение, то пожалуйста выделяйте его тегом [code=dfp] ... [/сode].
Для этого используйте кнопку [code=dfp] в форме ответа или комбобокс, если нужно вставить код на языке, отличном от Delphi for PHP.
Модераторы: ViktorXP, vicis
Страницы: (2) [1] 2  все  ( Перейти к последнему сообщению )  
> js обработка событий и доступ к свойствам объекта
    собственно вопрос. Имеется форма с treeview, написан обработчик onChangeSelected на js.
    в обработчике всего 1 строка window.parent.window.frames['contentframe'].location.href = "content.php?content=";
    Собственно открываем в другом фрейме файлик content.php и передаем параметр content=... ничему не равно :)
    Хочу передать параметром имя выделенного элемента с treeview. Как добраться до этого свойства с js?

    Добавлено
    разобрался. В обработчике просто пишем
    ExpandedWrap disabled
      window.parent.window.frames['contentframe'].location.href = "content.php?content="+TreeView1.getSelectedElement().getLabelObject().getHtml();

    тогда открывается во втором фрейме content.php и передается переменной content текст выбранного элемента.
      Для TreeView1 получить значение выбранного пункта:

      ExpandedWrap disabled
            function TreeView1JSClick($sender, $params)
            {
                ?>
                //begin js
                 var lst =  TreeView1.getSelection();
                 alert(lst[0].getLabel());
                //end
                <?php
            }

      а для QTreeView можно ещё и определять режим мультиселекта (выбор с Ctrl) или обычный
      ExpandedWrap disabled
            function QTreeView1JSClick($sender, $params)
            {
                ?>
                //begin js
                 var lst =  QTreeView1.getSelection();
                 if (QTreeView1.getSelectionMode() === "single")
                 {
                 alert(lst[0].getLabel());
                 }
                 else
                 {
                   var str = '';
                   for (var i=0; i<lst.length; i++)
                   {
                     str = str+lst[i].getLabel()+"\n";
                   }
                   alert(str);
                  }
                //end
                <?php
            }
      с другой стороны передавать название пункта в другое окно в открытом виде может быть не безопасно
      и возможно стоит рассмотреть родной пример IDE для TreeView с использованием свойства Tag
        Еще одна подсказка. В дизайнере вешаем любые компоненты, пичкаем их данными, запускаем пример и ... Смотрим исходный код сгенерированной страницы, очень многие подсказки для доступа к свойствам объекта можно взять прямо оттуда (для работы с ними через JS) :)))

        Пример - вот инициализация компонента qooxdoo QEdit1:
        ExpandedWrap disabled
          QEdit1 = new qx.ui.form.TextField("EditText");
          QEdit1.setTextAlign("left");
          //QEdit1
          QEdit1.setWidth(184);
          QEdit1.setHeight(21);
          gbox.add(QEdit1,{top:7, left:7});
          QEdit1.setFont(qx.bom.Font.fromString("Tahoma 11px"));
           QEdit1.addListener("input",function (e) { var h=findObj('QEdit1__text'); if (h) { h.value=QEdit1.getValue(); } });
          QEdit1.blockToolTip=true;
          QEdit1.setFocusable(true);
          QEdit1.tabIndex=0;
          Как запретить\разрешить свойство enabled у компонента checkbox?
          Такой код не работает,хотя и ошибку не выдает
          ExpandedWrap disabled
                      document.getElementById("CheckBox1").enabled = false;
            Вот так работает, проверено :)
            ExpandedWrap disabled
                 //bReset - кнопка
                 findObj('bReset').disabled = true;
              Спасибо.А обратно надо (чтобы разрешить)
              ExpandedWrap disabled
                document.getElementById("CheckBox1").disabled = false;

              Свойство enabled не работает корректно видимо...
                чтобы разрешить true меняешь на false. свойство используешь тоже disabled.
                  Button1->ButtonType = btNormal;
                  Button2->ButtonType = btNormal;

                  ExpandedWrap disabled
                       function Button1JSClick($sender, $params)
                       {
                          ?>
                            //begin js
                           ElementEnable(false,'CheckBox1');
                           ElementEnable(false,'Edit1');
                            //end
                          <?php
                       }
                        function Button2JSClick($sender, $params)
                        {
                            ?>
                            //begin js
                           ElementEnable(true,'CheckBox1');
                           ElementEnable(true,'Edit1');
                     
                            //end
                            <?php
                        }
                       function Page3BeforeShow($sender, $params)
                       {
                          echo "
                        <script type=\"text/javascript\">
                        //enbl - (true,false), ID - ID элемента
                        function ElementEnable(enbl,ID)
                        {
                          document.getElementById(ID).disabled = (
                            enbl == true ) ? false : true;
                        }
                        </script>
                        ";
                       }
                    Цитата vicis @
                    Для TreeView1 получить значение выбранного пункта:

                    ExpandedWrap disabled
                          function TreeView1JSClick($sender, $params)
                          {
                              ?>
                              //begin js
                               var lst =  TreeView1.getSelection();
                               alert(lst[0].getLabel());
                              //end
                              <?php
                          }

                    а для QTreeView можно ещё и определять режим мультиселекта (выбор с Ctrl) или обычный
                    ExpandedWrap disabled
                          function QTreeView1JSClick($sender, $params)
                          {
                              ?>
                              //begin js
                               var lst =  QTreeView1.getSelection();
                               if (QTreeView1.getSelectionMode() === "single")
                               {
                               alert(lst[0].getLabel());
                               }
                               else
                               {
                                 var str = '';
                                 for (var i=0; i<lst.length; i++)
                                 {
                                   str = str+lst[i].getLabel()+"\n";
                                 }
                                 alert(str);
                                }
                              //end
                              <?php
                          }
                    с другой стороны передавать название пункта в другое окно в открытом виде может быть не безопасно
                    и возможно стоит рассмотреть родной пример IDE для TreeView с использованием свойства Tag

                    QTreeView использовать не хочу, так как загрузка лишней библиотеки не нужна.
                    А по поводу безопасности передачи пункта с одного фрейма в другой, то ничего сверхсекретного у меня там нет.
                    З.Ы. За первый вариант спасибо.
                      Цитата fluid @
                      то ничего сверхсекретного у меня там нет

                      при чём здесь секретное
                      ломанут твой код спаммеры
                      конечно от задачи зависит, но потенциальнвя дырка
                        Цитата
                        Еще одна подсказка. В дизайнере вешаем любые компоненты, пичкаем их данными, запускаем пример и ... Смотрим исходный код сгенерированной страницы, очень многие подсказки для доступа к свойствам объекта можно взять прямо оттуда (для работы с ними через JS)

                        Для AutoComplete получить ID выбранного элемента такой фокус не прошел :(
                        Сообщение отредактировано: Eremeev -
                          Цитата Eremeev @
                          Для AutoComplete получить ID выбранного элемента такой фокус не прошел

                          если ты хочеш что бы тебе отвечали, то пиши понятно...
                          какой ещё выбранный элемент у AutoComplete ?
                          о чём это ?
                            Цитата vicis @
                            Цитата Eremeev @
                            Для AutoComplete получить ID выбранного элемента такой фокус не прошел

                            если ты хочеш что бы тебе отвечали, то пиши понятно...
                            какой ещё выбранный элемент у AutoComplete ?
                            о чём это ?

                            Ну там очень просто. Бросаем на форму элемент AutoComplete1,
                            делаем запросик select id, name from t1
                            заполняем соотв. поля LookupField - id и LookupDisplay - name
                            и при выборе элемента пытаемся получить id выбранного элемента.
                            С помощью пхп не понял как, но мне-то он нужен на стороне клиента.
                            Смотрим исходный код сгенерированной страницы под отладчиком - я например ничего
                            не увидел и тупо допилил напильником файл jquery.autocomplete.js
                            Теперь id получаеться без проблем, но все равно есть чувство
                            чего-то элементарно недосмотренного.
                            А вот то что AutoComplete1 не различает заглавные русские буквы в базе(utf8) при
                            использовании - побороть не смог никак.
                              Цитата Eremeev @
                              Смотрим исходный код сгенерированной страницы под отладчиком - я например ничего
                              не увидел

                              Здесь смотреть нужно в первую очередь сюда
                              http://docs.jquery.com/Plugins/autocomplete
                              исходник страницы мало чем поможет
                                Цитата
                                Здесь смотреть нужно в первую очередь сюда
                                http://docs.jquery.com/Plugins/autocomplete
                                исходник страницы мало чем поможет

                                Там тоже смотрел в первую очередь - никаких особых примеров, тем более что меня интересовала
                                связка в контексте с RadPHP. Поэтому берем исходники jquery.autocomplete.js
                                анализируем работу под отладчиком - дорабатываем напильником. Да и ты скорее полезешь в исходники, чем будешь по их туманной доке делать.
                                1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
                                0 пользователей:


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,0474 ]   [ 14 queries used ]   [ Generated: 3.06.24, 08:57 GMT ]