如何使用JavaScript向SharePoint模式添加按钮?

如何使用JavaScript向SharePoint模式添加按钮?,javascript,sharepoint,Javascript,Sharepoint,我有一个模态要显示,它显示得很好。我试图在模式中添加一个按钮,该按钮应该启动acceptTerms()函数,存储cookie,然后关闭模式 我正努力在模态上找到一个按钮。它添加了HTML,我可以在源代码中看到它,只是没有出现 我在Web部件中尝试过类似的内容: var acceptBtn = '<input type="button" style="width:75px;" value="I Accept" onclick="acceptTerms()">'; $('body').a

我有一个模态要显示,它显示得很好。我试图在模式中添加一个按钮,该按钮应该启动acceptTerms()函数,存储cookie,然后关闭模式

我正努力在模态上找到一个按钮。它添加了HTML,我可以在源代码中看到它,只是没有出现

我在Web部件中尝试过类似的内容:

var acceptBtn = '<input type="button" style="width:75px;" value="I Accept" onclick="acceptTerms()">';
$('body').append(acceptBtn);
var acceptBtn='';
$('body').append(acceptBtn);
以下是Web部件JS:

<script language="javascript" type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.min.js"></script>  
<script language="javascript" type="text/javascript">  
    $(document).ready(function() {  
    SP.SOD.executeFunc('sp.js', 'SP.ClientContext', showModalPopUp);  
});  

var agreed = document.cookie.replace(/(?:(?:^|.*;\s*)Acknowledged\s*\=\s*([^;]*).*$)|^.*$/, "$1");
if(!agreed) {
    function showModalPopUp() {  
    //Set options for Modal PopUp  
    var options = {  
        url: '/path/to/my/terms/page.aspx', //Set the url of the page  
        title: 'Terms', //Set the title for the pop up  
        allowMaximize: false,  
        autosize: true,
        showClose: true,  
        width: 600,  
        height: 400, 
    };  
    //Invoke the modal dialog by passing in the options array variable  
    SP.SOD.execute('sp.ui.dialog.js', 'SP.UI.ModalDialog.showModalDialog', options);  
    return false;  
    }
}

function acceptTerms() {
    var d = new Date();
    var expire = new Date(d);
    expire.setDate(d.getDate() + 365);
    document.cookie = "Acknowledged=true; Path=/; Expires="+expire;
    SP.UI.ModalDialog.commonModalDialogClose(SP.UI.DialogResult.Yes);
}  

$(文档).ready(函数(){
SP.SOD.executeFunc('SP.js','SP.ClientContext',showModalPopUp);
});  
var agreed=document.cookie.replace(/(?:(?:^ |。*;\s*)已确认\s*=\s*([^;]*).$)|.*$/,“$1”);
如果(!同意){
函数showModalPopUp(){
//设置模式弹出窗口的选项
变量选项={
url:'/path/to/my/terms/page.aspx',//设置页面的url
标题:'术语',//设置弹出窗口的标题
allowMaximize:false,
自动调整大小:正确,
showClose:没错,
宽度:600,
身高:400,
};  
//通过传入options数组变量来调用模态对话框
SP.SOD.execute('SP.ui.dialog.js','SP.ui.ModalDialog.showModalDialog',选项);
返回false;
}
}
函数接受项(){
var d=新日期();
var到期=新日期(d);
expire.setDate(d.getDate()+365);
document.cookie=“Acknowledged=true;Path=/;Expires=“+expire;
SP.UI.ModalDialog.commonModalDialogClose(SP.UI.DialogResult.Yes);
}  

因此,在定义要显示的html的选项中,您为模态提供了一些选项

url: '/path/to/my/terms/page.aspx' url:“/path/to/my/terms/page.aspx” 因此,所有想要显示的html和JS逻辑都应该在这个页面中

另一种方法,但我想不是最好的方法是使用jQuery技巧将按钮添加到模式布局中(但请注意,这不是推荐的方式,因为SharePoint modal framework应该允许在定义的布局中显示您输入的html,因此这不是修改布局的最佳选项。正如我前面所说,您的逻辑应该在您传递的html(aspx)页面中) 所以诀窍是这样做:

$(document).ready(function() { SP.SOD.executeFunc('sp.js', 'SP.ClientContext', showModalPopUp); }); var agreed = document.cookie.replace(/(?:(?:^|.*;\s*)Acknowledged\s*\=\s*([^;]*).*$)|^.*$/, "$1"); if(!agreed) { function showModalPopUp() { createModal() $("#dlgTitleBtns .ms-dlgCloseBtn").before(""); $("#dialogTitleSpan").attr("style","width:auto;"); } } function createModal() { //Set options for Modal PopUp var options = { url: '/path/to/my/terms/page.aspx', //Set the url of the page title: 'Terms', //Set the title for the pop up allowMaximize: false, autosize: true, showClose: true, width: 600, height: 400, }; //Invoke the modal dialog by passing in the options array variable SP.SOD.execute('sp.ui.dialog.js', 'SP.UI.ModalDialog.showModalDialog', options); } function acceptTerms() { var d = new Date(); var expire = new Date(d); expire.setDate(d.getDate() + 365); document.cookie = "Acknowledged=true; Path=/; Expires="+expire; SP.UI.ModalDialog.commonModalDialogClose(SP.UI.DialogResult.Yes); } $(文档).ready(函数(){ SP.SOD.executeFunc('SP.js','SP.ClientContext',showModalPopUp); }); var agreed=document.cookie.replace(/(?:(?:^ |。*;\s*)已确认\s*=\s*([^;]*).$)|.*$/,“$1”); 如果(!同意){ 函数showModalPopUp(){ createModal() 美元(“#dlgTitleBtns.ms dlgCloseBtn”)。在(“”)之前; $(“#dialogTitleSpan”).attr(“样式”,“宽度:自动;”); } } 函数createModal() { //设置模式弹出窗口的选项 变量选项={ url:'/path/to/my/terms/page.aspx',//设置页面的url 标题:'术语',//设置弹出窗口的标题 allowMaximize:false, 自动调整大小:正确, showClose:没错, 宽度:600, 身高:400, }; //通过传入options数组变量来调用模态对话框 SP.SOD.execute('SP.ui.dialog.js','SP.ui.ModalDialog.showModalDialog',选项); } 函数接受项(){ var d=新日期(); var到期=新日期(d); expire.setDate(d.getDate()+365); document.cookie=“Acknowledged=true;Path=/;Expires=“+expire; SP.UI.ModalDialog.commonModalDialogClose(SP.UI.DialogResult.Yes); } 或者类似的:)。。。请注意,我没有对此进行测试,但这应该会让您了解该方法。
类似的解决方案也可以在这里找到->

您是否尝试在web部件中添加按钮而不附加它<代码>我接受然后你的脚本?