sharepoint模式弹出窗口以显示div内容

时间:2013-10-15 11:09:21

标签: jquery html sharepoint

我试图在sharepoint模式弹出窗口中显示div内容。以下是我的代码:

function callPopup(){
var options = SP.UI.$create_DialogOptions();
    options.html = addFilePopup //id of the div to be displayed
    options.title = 'Add file';
    options.width = 300;
    options.height = 150;
    SP.UI.ModalDialog.showModalDialog(options);
}

HTML:

<div id="addFilePopup" align="center" runat="server">
        <div id="buttons">
            <input type="file" id="file" name="file" />
        </div>
        <div id="divOverwrite" style="margin-right: 60px;">
            <input type="checkbox" id="chkOverWrite" value="overwrite" />
            <label id="lblOverwrite">Overwrite if file already exists</label>
        </div>
        <div style="margin-top: 40px;">
            <input type="button" value="Add file" id="btnAddFile" onclick="AddAFile();"/>
            <input type="button" value="Cancel" id="btnCancel" />
        </div>
</div>

弹出窗口第一次显示自己很好。 但是如果第二次调用函数callPopup,则说“addFilePopup”是未定义的。 似乎在第一次调用弹出窗口后从DOM中删除了div“addFilePopup”。知道我在这里做错了什么吗?

P.S:我已尝试使用和不使用“runat = server”进行div。

2 个答案:

答案 0 :(得分:0)

通常,当您克隆应该是最后的手段时,因为in会带来很多副作用-例如ID翻倍。

我假设callPopup()是事件回调。假设您在按钮上的click事件打开了此弹出窗口,而该弹出窗口又应该可视化已加载到DOM的html代码。

   $('#addFilePopup').hide();

   function callPopup(){
      var options = SP.UI.$create_DialogOptions();
      options.html = addFilePopup //id of the div to be displayed
      options.title = 'Add file';
      options.width = 300;
      options.height = 150;
      SP.UI.ModalDialog.showModalDialog(options);
   }

这应该使您的html隐藏,并同时将其加载到DOM中。 触发事件后,您应该添加

 $('#addFilePopup').show();

您的代码应如下所示:

$('#addFilePopup').hide();
function callPopup(){
$('#addFilePopup').show();
  var options = SP.UI.$create_DialogOptions();
  options.html = addFilePopup //id of the div to be displayed
  options.title = 'Add file';
  options.width = 300;
  options.height = 150;
  SP.UI.ModalDialog.showModalDialog(options);

}

由于options.html必须接收DOM元素,这与msdn文档所说明的相反,这是我知道的最简单的方法。我不能说它是否理想,但是根据应用程序的复杂性,它可能会在共享点弹出窗口方面给出有效选项的提示。

P.S。我知道已经6年了,但是如果有人遇到这个问题,希望可以为活动提供更好的解决方案。

答案 1 :(得分:-1)

我是个新手,但我之前发生过这件事。会发生什么情况是您正在使用原始div并且在您第一次呼叫后它会被删除。如果您仍然遇到此问题,可以使用jQuery clone()函数。

所以而不是 options.html = addFilePopUp

我建议先为你的div做一个变量

var popUpDiv = $("div#addFilePopUp").clone();

然后调用您的选项

var options = SP.UI.$create_DialogOptions();
options.html = popUpDiv;
options.title = 'Add file';
options.width = 300;
options.height = 150;
SP.UI.ModalDialog.showModalDialog(options);

这将创建div的多个实例,因此您必须使用css隐藏原始实例。希望这可以帮助。

相关问题