yii アプリにモーダル ウィンドウを追加しようとしました。このために、フレームワークの jquery を使用します。それでも、フレームワークの jquery (1.8.3) では機能しません: Framework/web/js/source
エラーは:
Uncaught TypeError: Object [object Object] has no method 'modal'
この行では:
$('#dataModal').modal().css({
width: 'auto',
height: 'auto',
});
(以下の完全なコードを参照してください)。
modal() を dialog() に交換すると、同じことが起こります。
それでも、最新のjquery(1.10.2)をクライアントスクリプトとして登録してgoogleapisを介してアップロードしようとすると、動作します(ただし、ビュー呼び出しごとに1回だけです): config/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 ブートストラップ エクステンションに関しては、私はそれを使用しており、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>