javascript - 添加 WFFM 表单 - Jquery 问题

标签 javascript jquery sitecore web-forms-for-marketers

我正在使用 Sitecore 8 Update 2 制作一个页面,人们可以在其中留下一些个人信息。如果用户登录,则会为其填写信息。 (标准mvc 5形式)

我添加了一个 WFFM(8.0 rev 141217)登录表单(如果成功,页面将重新加载并且所有字段都已填写),但是当包含此代码时,它会弄乱 Jquery。

        @Html.Sitecore().Placeholder("form")

enter image description here

我仍然可以看到 jquery 文件已加载到浏览器中,但“Jquery”变量现在未定义。 (我在该页面上运行了一堆 Jquery)

enter image description here

我可以采取什么措施来防止这种情况发生,或者如何找出导致这种情况的原因?

编辑:

我找到了一切都变坏的代码。 该函数完成后,Jquery 变量未定义。但据我所知,这段代码是作为 WFFM 的一部分添加的。 (与 html 元素内联)

<script type="text/javascript">
    if (typeof ($scw) === "undefined") {
        window.$scw = jQuery.noConflict(true);
    }
    $scw(document).ready(function () {            
        $scw("#LVn73Spq0EGYvPQZ7-bA5Q").eventTracking({ pageId: "{55D3F49D-6EDA-43FB-81F1-191D34F896D4}", rules: "{&quot;*&quot;:&quot;{844BBD40-91F6-42CE-8823-5EA4D089ECA2}&quot;,&quot;regex&quot;:&quot;{F3D7B20C-675C-4707-84CC-5E5B4481B0EE}&quot;,&quot;length&quot;:&quot;{F3D7B20C-675C-4707-84CC-5E5B4481B0EE}&quot;,&quot;required&quot;:&quot;{7E86B2F5-ACEC-4C60-8922-4EB5AE5D9874}&quot;}" });
    });
</script>

最佳答案

您需要在表单中包含 WFFM 脚本包。您可以通过在 /Views/Form/Index.cshtml

中注册脚本来完成此操作
@Scripts.Render("~/bundles/wffm/jquery")
@Scripts.Render("~/bundles/wffm/scripts")
@Styles.Render("~/content/wffm/jquery")
@Styles.Render("~/content/wffm/themes")

您只需要包含前两个,其他使用 jQuery UI 主题添加默认样式,然后您可以覆盖它们(或不包含它们并自行设置它们的样式)。

js错误的原因是jQuery.noConflict(true)从范围内重置了jQuery名称。 WFFM noConflict 调用会删除最后加载的 jQuery 库,在本例中,该库是您在页面前面手动加载的脚本,并且由于它是唯一的 jQuery 库,因此没有任何可回退的内容。

If necessary, you can free up the jQuery name as well by passing true as an argument to the method. This is rarely necessary, and if you must do this (for example, if you need to use multiple versions of the jQuery library on the same page)

参见jQuery.noConflict()this blog post有关加载两个版本的 jQuery 的更多详细信息

如果您确定加载的 jQuery 版本与 WFFM 加载版本兼容,那么您可以简单地设置 window.$scw = jQuery; 但您仍然需要加载脚本包,因为它包括表单特定的功能。

关于javascript - 添加 WFFM 表单 - Jquery 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31680795/

相关文章:

javascript - addEventListener 不是 Safari 浏览器中 matchMedia 的函数

javascript - 带有嵌套数组的微模板

javascript - Angular 2 : Convert a complex JSON Object to a Simple one

javascript - 在 CoffeeScript 构造函数中调用时,jQuery 无法将事件处理程序附加到对象

jQuery 将值从一种形式传递到以前的形式

web-config - 跨多个站点/域的 Sitecore 6.5 url(不解析站点?)

asp.net - 如何使用 API 在 Sitecore 5.3 中发布项目

javascript - 如何以编程方式将 Ace(vim 键盘布局)置于插入模式

SVG文件到媒体库

javascript - 这是有效的 JSON 标记吗?