我正在和Yii开发一个项目。我需要在网站的许多页面上使用jquery ui。所以我在网站的布局中添加了jquery核心库和jquery ui库,以便在所有页面上都可以访问它们。但它会在有表单(活动表单)的页面上造成问题。我在Firebug上看到了这个错误:
jQuery(...).activeform is not a function
为甚么会这样呢?2我怎样才能解决呢?
dsekswqp1#
如果您在布局文件中手动包含了jQuery核心库,那么jQuery可能会被第二次加载,并覆盖原来的jQuery对象,而原来的jQuery对象已经附加了Yii插件。您应该改用Yii::app()->clientScript->registerCoreScript('jquery.ui')。
Yii::app()->clientScript->registerCoreScript('jquery.ui')
ttvkxqim2#
您可能在页面中加载了两次jquery,请检查layout/main.php中的代码,以及您注册jquery的位置。在yii中加载jquery的默认代码如下Yii::app()->clientScript如果您在此处加载jquery,并且您可能在布局中也加载了jquery,请检查此行。检查这一点的最佳方法是使用html调试器并查看出错页面的页面源代码。
Yii::app()->clientScript
ruarlubt3#
在head.php中添加以下代码和js路径
<?php YII_DEBUG === true ? Yii::app()->clientScript->scriptMap = array('jquery.js'=>'/js/jquery-3.3.1.js') : Yii::app()->clientScript->scriptMap = array('jquery.min.js'=>'/js/jquery-3.3.1.min.js') ?> <?php Yii::app()->getClientScript()->registerCoreScript('jquery'); ?>
brc7rcf04#
在js文件夹中创建一个名为yii.activeForm.js的文件,并复制https://codeclimate.com/github/yiisoft/yii2/framework/assets/yii.activeForm.js/source中的内容。不要忘记在AppAsset.php中包含该文件。
4条答案
按热度按时间dsekswqp1#
如果您在布局文件中手动包含了jQuery核心库,那么jQuery可能会被第二次加载,并覆盖原来的jQuery对象,而原来的jQuery对象已经附加了Yii插件。
您应该改用
Yii::app()->clientScript->registerCoreScript('jquery.ui')
。ttvkxqim2#
您可能在页面中加载了两次jquery,请检查layout/main.php中的代码,以及您注册jquery的位置。在yii中加载jquery的默认代码如下
Yii::app()->clientScript
如果您在此处加载jquery,并且您可能在布局中也加载了jquery,请检查此行。检查这一点的最佳方法是使用html调试器并查看出错页面的页面源代码。
ruarlubt3#
在head.php中添加以下代码和js路径
brc7rcf04#
在js文件夹中创建一个名为yii.activeForm.js的文件,并复制https://codeclimate.com/github/yiisoft/yii2/framework/assets/yii.activeForm.js/source中的内容。
不要忘记在AppAsset.php中包含该文件。