@EVOSandru6

Как вызвать javascript функцию в Yii в зоне Jquery?

Добрый день,

Есть проблема с вызовом js кода.

Есть такой кусок в представлении:

Листинг 1:



1. Если я вызываю pium(), он выполняется, но в свою очередь не видит функцию tadam().

2. В главном файле темы main.php в футере подключен файл scripts.js:

<?php   Yii::app()->clientScript->registerScriptFile(Yii::app()->request->baseUrl.'/js/scripts.js');?>


Всякие алерты в нем выполняются.

в нем есть простая функция func():

$(document).ready(function()
{
  function func()
     {
        alert("hello");
     }
});


Находясь в текущем action в листинге 1 вызывается даная функция func().
И тут обломчик, функция не найдена, хотя если открыть firebug, можно открыть исходы подключаемого файла и там все прописано)

3. Проблемы начались когда я захотел вынести в функцию ajax поиск в js файл ( В итоге моего быдлокода функция лежит в текущем представлении ). Есть autocomplete поиска:

Фрагмент:
<?php $this->widget('zii.widgets.jui.CJuiAutoComplete',
                    [
                        'name'=>'name',
                        'value'=>'',
                        'source'=>Yii::app()->createUrl('hotels/autocomplete'),
                        'options'=>
                            [
                                'showAnim'=>'fold',
                                'minLength'=>'3',
                                'select'=>'js:function( event, ui )
                                {
                                    $("#nameSearch").val( ui.item.label );
                                    $("#nameValue").val( ui.item.label );
                                    // $("#nameID").val( ui.item.id );

                                    // Поиск отеля
                                    // searchHotel();
                                    pium();
                                    return false;
                                }',
                            ],
                        'htmlOptions'=>
                            [
                                'onfocus' => 'js: this.value = null; $("#nameValue").val(null); $("#selectedvalue").val(null);',
                                'class' => 'input-xxlarge search-query',
                                'name' => 'Hotels[name]',
                                'placeholder' => "Введите первые 3 и более названия",
                                'id'=>'nameSearch'
                            ],
                    ]);

                ?>


Если заместо pium() воткнуть alert() ,$('*').hide() либо тело функции, которую я вынес (searchHotel), то они отрабатывают. pium() тоже отрабатывается, если он находится не в зоне jquery, как в листинге 1. Не отрабатывают вызовы функций в зоне jquery. В чем может быть причина? Где я тупанул?
  • Вопрос задан
  • 708 просмотров
Решения вопроса 1
alexey-m-ukolov
@alexey-m-ukolov Куратор тега JavaScript
$(document).ready(function()
{
  function func()
     {
        alert("hello");
     }
});

Вы функцию обернули в замыкание, таким образом ограничив её область видимости. Уберите $(document).ready или сделайте window.func = function () {}.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
28 нояб. 2024, в 13:00
70000 руб./за проект
28 нояб. 2024, в 12:59
30000 руб./за проект
28 нояб. 2024, в 12:58
5000 руб./за проект