-->

如果不能通过jQuery的Yii中调用一个模态窗口(Failure invoking a modal

2019-10-18 18:53发布

我试着模式窗口添加到我的警予的应用程序。 为此,我使用jquery从框架。 然而,它并不与框架的jQuery(1.8.3)工作: 框架/网络/ JS /源
错误是:
未捕获的类型错误:对象[对象的对象]无方法“模态”
在这一行:

$('#dataModal').modal().css({
            width: 'auto',
            height: 'auto',
    });

(请参见下面的完整代码)。
当我交换模式()到对话框同样的情况()。

然而,当我试图通过注册它作为一个客户端脚本来上传通过googleapis最新的jQuery(1.10.2),它的工作原理(仅在每个视图中调用一个时间虽然): 配置/ main.php:

'components'=>array(
...
 'clientScript'=>array(
    'packages'=>array(
        'jquery'=>array(
            'baseUrl'=>'//ajax.googleapis.com/ajax/libs/jquery/1/',
            'js'=>array('jquery.min.js'),
        ),
    ),
 ),

并在视图中注册它:

Yii::app()->clientScript->registerCoreScript('jquery');

本案有关完整的代码是在这里:

<!-- modal window -->      
<?php $this->beginWidget('bootstrap.widgets.TbModal', 
    array('id'=>'dataModal')); ?>
    <div class="modal-header">
        <a class="close" data-dismiss="modal">×</a>
        <h4><?=Yii::t("ui", "Выберите номенклатуру")?></h4>
        <!--?php $this->widget('bootstrap.widgets.TbButton', array(
            'label'=>Yii::t("ui", "Справочник номенклатуры"),
            'url'=>$this->createUrl('assortment/index'),            
            'htmlOptions'=>array('data-dismiss'=>'modal', 'class' => 'btn btn-medium btn-primary', /*'style'=>'float:right; clear:both;'*/),
        )); ?-->
    </div>
    <div class="modal-body"></div>
    <div class="modal-footer">
    <?php $this->widget('bootstrap.widgets.TbButton', array(
            'label'=>Yii::t("ui", "Справочник номенклатуры"),
            'url'=>Yii::app()->createUrl('assortment/index'),           
            'htmlOptions'=>array(/*'data-dismiss'=>'modal',*/ 'class' => 'btn btn-medium btn-primary', 'style'=>'float:left; /*clear:both;*/'),
        )); 
        $this->widget('bootstrap.widgets.TbButton', array(
            'label'=>Yii::t("ui", "Отмена"),
            'url'=>'#',
            'htmlOptions'=>array('data-dismiss'=>'modal'),
        )); ?>
    </div>
<?php $this->endWidget(); ?>
<!-- modal end --> 
 ...
<script type="text/javascript">
// this function calls the modal thru AJAX
$('#data-select-btn').click(function(){
   var buttn = this; 
   // $(buttn).button('loading'); 
    $.ajax({
      url: "<?php echo $this->createAbsoluteUrl('order/loadData') ?>", /*LoadDataCheckBox*/
      cache: false,
      data: "type="+$("#Order_type").val(),
      success: function(html){
        $(".modal-body").html(html);       
        //$(buttn).button('reset');
        $('#dataModal').modal().css({
            width: 'auto',
            height: 'auto',
            'margin-top': '-50px',
            'margin-left': function () {
                return -($(this).width() / 2) - 80;
            },
        });
      }          
    });
})
</script>

对于jQuery的UI它们也包含:

<script type="text/javascript" src="/application/assets/6d25656/jui/js/jquery-ui.min.js"></script>
<script type="text/javascript" src="/application/assets/6d25656/jui/js/jquery-ui-i18n.min.js"></script>

更新

至于Yii引导extention我使用它,并在bootstrap.js有模态类的定义和插件定义。 jQuery的后,该文件被加载,但jQuery的UI之前, 的确序列回事?

<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js">
...
<script type="text/javascript" src="/application/assets/7d883f12/js/bootstrap.js"></script>

视图文件的结束:

<script type="text/javascript" src="/application/assets/6d25656/jui/js/jquery-ui.min.js"></script>
<script type="text/javascript" src="/application/assets/6d25656/jui/js/jquery-ui-i18n.min.js"></script>

Answer 1:

试试这个...在order/loadData确保您的RenderPartial没有加载脚本第二次。

$this->renderPartial('view_partial', array(
    'model' => $model,
), false, false);

http://www.yiiframework.com/doc/api/1.1/CController#renderPartial-detail



Answer 2:

顺序很重要。

你应该先加载了jQuery,然后jQuery的UI,THW bootsttrap.js

尝试表明在registerScript的位置:

Yii::app()->clientScript->registerCoreScript('jquery', CClientScript::POS_HEAD);

更多资讯: http://www.yiiframework.com/doc/api/1.1/CClientScript#registerScriptFile-detail

你怎么样,包括jQuery UI的?

===编辑===尝试/主要使用这种改变在配置脚本的命令:

'components'=>array(
...
    'clientScript' => array(
        'coreScriptPosition' => CClientScript::POS_END,
    )
),

如果没有工作,只是禁用这样的autoloding:

'clientScript' => array(
    'scriptMap'=>array(
        'jquery.js'=>false,
        'jquery.min.js'=>false
    ),
),

然后加载就像旧天;)

<script src="<?php echo $this->baseURL ?>/js/jquery.min.js"></script>


文章来源: Failure invoking a modal window through jquery in Yii