首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在jQuery中工作的SharePoint警报,添加到SharePoint CEWP时不起作用

在jQuery中工作的SharePoint警报,添加到SharePoint CEWP时不起作用
EN

Stack Overflow用户
提问于 2011-12-14 20:02:20
回答 3查看 2.9K关注 0票数 0

它在我的小提琴http://jsfiddle.net/JustJill54/XFaaG/11/上工作,但当我将jQuery代码添加到CEWP时,它不起作用。(财政年度。我只是把jQuery放在CEWP中作为概念的证明。)当我在小提琴上看到src时,唯一的区别是Window.Load()事件是存在的,所以我尝试将该事件添加到我的CEWP中,但是警报仍然不起作用。

这是CEWP的代码

代码语言:javascript
复制
<script type="text/javascript" src="http://code.jquery.com/jquery-1.7.1.min.js"></script>
<script type="text/javascript">
$(window).load(function(){

$(document).ready(function() {
    $("tr.reqDet").hide();
    $("tr.anon").hide();
    $("tr.actDet").hide();

    // Attach to the focusout event of the select, if that's when
    // you want to check the value
    $("select[title='organizationalElement']").focusout(function() {
        // Now see if it's the value you want
        if ($(this).val() === 'idk') {
            alert("If no organizational element is selected, additional time may be required to route this request");
        } //close if
    $("select[title='requestType']").change(function() {
        $(".reqDet").toggle($(this).val() !== "");
    }); //close requestType
    $("select[title='anonymous']").change(function() {
        $(".anon").toggle();
    }); //close anonymous
    $("select[title='action']").change(function() {
        $(".actDet").toggle($(this).val() !== "");
    }); //close action
    }); //close select.focusout
}); //close doc.ready
}); //close window.load
</script>

更新:我已经注释掉了我所有的逻辑,只是试图获得一个警报,以显示页面加载时,我仍然无法使它工作。

UPDATE2:我已经创建了一个具有与.html页面相同的控件的.html页面,并添加了jQuery脚本来显示页面加载时的警报,即使这个脚本也是工作的,但是使用.aspx页面的.aspx:FormField控件不起作用。

UPDATE3:我引用了一个javascript教程并修改了我的脚本。主要的区别是,不相等的操作符已经改为!=,我已经注释掉了Window.load事件。下面是我修改过的脚本:

代码语言:javascript
复制
//$(window).load(function(){

$(document).ready(function(){

    $("tr.reqDet").hide();
    $("tr.anon").hide();
    $("tr.actDet").hide();

    $("select[title='organizationalElement']").focusout(function() {

        if ($(this).val() === 'idk') {
            alert("If no organizational element is selected, additional time may be required to route this request");
        } // close if

    $("select[title='requestType']").change(function() {
        $(".reqDet").toggle($(this).val() != "");
    }); //close requestType.change

    $("select[title='anonymous']").change(function(){
      $(".anon").toggle();
    }); //close anonymous.change

    $("select[title='action']").change(function(){
        $(".actDet").toggle($(this).val()!= "");
    }); // close action.change

    });//close select.focusout

}); // close doc.ready
//}); // close window.load

UPDATE4:我使用firebug获取选择器的val,并意识到它不是返回'idk‘(由SP的列表项的值指定),而是返回“我不知道”。这又引起了另一个问题/提醒我,我需要摆脱“不要”中的撇号。不管怎样,我还在想办法.

UPDATE5:@Janis-我无法在firebug的script选项卡上看到我的脚本.所以我想这意味着它不是被处决的。

顺便说一下。下面是UPDATE4之后脚本的状态。

代码语言:javascript
复制
$(window).load(function(){

$(document).ready(function(){

    $("tr.reqDet").hide();
    $("tr.anon").hide();
    $("tr.actDet").hide();

    $("select[title='organizationalElement']").focusout(function() {

        if ($(this).val() === "I don\'t know") {
            alert("If no organizational element is selected, additional time may be required to route this request");
        } // close if

    $("select[title='requestType']").change(function() {
        $(".reqDet").toggle($(this).val() != "");
    }); //close requestType.change

    $("select[title='anonymous']").change(function(){
      $(".anon").toggle();
    }); //close anonymous.change

    $("select[title='action']").change(function(){
        $(".actDet").toggle($(this).val()!= "");
    }); // close action.change

    });//close select.focusout

}); // close doc.ready
}); // close window.load

知道为什么吗?我以为我使用的是经常被称为(doc.ready,window.load)的相当一般的事件。

UPDATE6: Geez...FINALLY!我猜第六次是魅力所在。我肯定会告诉大家什么对我有用.无论如何,修改后的脚本如下:

代码语言:javascript
复制
<script type="text/javascript" src="http://code.jquery.com/jquery-1.7.1.min.js"></script> 
<script type="text/javascript"> 
$(window).load(function(){  
  $(document).ready(function(){      
     $("tr.reqDet").hide();     
     $("tr.anon").hide();     
     $("tr.actDet").hide();      
   $("select[title='organizationalElement']").focusout(function() {          
     if ($(this).val() === "I don\'t know") {             
        alert("If no organizational element is selected, additional time may be required to route this request");         
     } // close if      
      $("select[title='requestType']").change(function() {         
        $(".reqDet").toggle($(this).val() != "");     
      }); //close requestType.change      
      $("select[title='anonymous']").change(function(){       
        $(".anon").toggle();     
      }); //close anonymous.change      
      $("select[title='action']").change(function(){         
        $(".actDet").toggle($(this).val()!= "");     
      }); // close action.change      
   });//close select.focusout  
  }); // close doc.ready 
}); // close window.load 
</script>

我没有直接粘贴到.js文件中,而是将它作为SiteAssets文件上传到我创建的一个名为SiteAssets的文件夹中(如果我们迁移到SPD2010),并通过CEWP的内容链接调用该文件...js。使用firebug来验证脚本是否已加载。

所以,我在我的SP页面中学到了让这个jQuery脚本为我工作的一些东西-

  1. 并不认为您知道返回的是什么--使用firebug的console选项卡来获得确切的结果--
  2. 检查语法
  3. ,即使在引用...js文件中的jQuery代码时,也要确保它启动w/必需标记o.w。您可能会将脚本作为文本插入到希望页的底部,这很有帮助!
EN

回答 3

Stack Overflow用户

发布于 2011-12-16 00:51:09

尝试将上述脚本添加到文本文件中,并将其保存在文档库中。然后编辑CEWP并在参考链接中添加脚本文件的url。SharePoint喜欢删除/销毁直接输入到CEWP中的代码。

票数 1
EN

Stack Overflow用户

发布于 2011-12-16 14:54:33

  1. 试图查看源代码并查看是否成功地引用了jQuery,并且您的代码是否确实存在。如果可以,还可以使用诸如Firebug或chrome检查器或internet explorer开发工具等调试工具,并设置断点以查看代码是否实际得到执行,以及是否有任何错误阻止代码执行。如果您不知道如何使用它们,那么学习它们将大大节省调试这些问题的时间。
票数 1
EN

Stack Overflow用户

发布于 2011-12-15 00:00:25

只要检查你的小提琴,并发现那里,你在做一个window.load魔术,但只要删除它!

代码语言:javascript
复制
 $(window).load(function(){

我试过在你的小提琴和我的测试SharePoint,它工作。只需移除该行及其结束标记即可。

*不确定这会有魔力,但它对我有用,应该为你做*

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8510898

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档