我试图在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。
答案 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隐藏原始实例。希望这可以帮助。