我正在用 Yii 开发一个项目。
我需要在网站的许多页面上使用 jquery ui。因此,我在站点布局中添加了 jquery 核心库和 jquery ui 库,以便在所有页面上都可以访问它们。
但这会导致具有表单(活动表单)的页面出现问题。我在萤火虫上看到了这个错误:
jQuery(...).activeform is not a function
为什么会这样?我该如何解决?
谢谢你。
我正在用 Yii 开发一个项目。
我需要在网站的许多页面上使用 jquery ui。因此,我在站点布局中添加了 jquery 核心库和 jquery ui 库,以便在所有页面上都可以访问它们。
但这会导致具有表单(活动表单)的页面出现问题。我在萤火虫上看到了这个错误:
jQuery(...).activeform is not a function
为什么会这样?我该如何解决?
谢谢你。
如果您在布局文件中手动包含 jQuery 核心库,则 jQuery 可能会再次加载并覆盖附加了 Yii 插件的原始 jQuery 对象。
你应该Yii::app()->clientScript->registerCoreScript('jquery.ui')
改用。
您可能在页面中加载了两次 jquery,请检查您在 layout/main.php 中的代码以及您在哪里注册了 jquery。在 yii 中加载 jquery 默认代码如下
Yii::app()->clientScript
请检查这一行,如果你在这里加载 jquery 并且你可能已经在你的布局中加载了 jquery。检查这一点的最佳方法是使用 html 调试器并查看出现错误的同一页面的页面源代码。
将此代码与您的路径添加到 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'); ?>
在 js 文件夹中创建一个名为 yii.activeForm.js 的文件,然后从https://codeclimate.com/github/yiisoft/yii2/framework/assets/yii.activeForm.js/source复制内容。
不要忘记在 AppAsset.php 中包含该文件。