【发布时间】:2019-05-26 15:58:51
【问题描述】:
SharePoint 4
SharePoint 设计器 2013
在Custom JS下使用DFFS添加代码
我现在用的是
window.addEventListener('beforeunload', function (e) {
e.preventDefault();
e.returnValue = '';
});
这给了我一个“您所做的更改可能无法保存”。每当我尝试离开我需要的页面时弹出。不过,我有 2 个问题,而且我找到的所有资源都不能完全解决它们。
- 当我点击保存表单时会出现此弹出窗口
- 如果我点击取消此 ↑ 特定弹出窗口,提交按钮将保持灰色且不可点击
解决第一个问题应该可以摆脱第二个问题,但我找不到有效的解决方案。我找到的最接近的是To stop the alert on form submission, I used $("#submit_button").click(function() { window.onbeforeunload = null; });,但它来自较旧的线程并且不起作用。
*编辑
我突然想到,我用来更改我不希望弹出窗口的同一个按钮的文本的代码块可能对比我更精通编码的人有用
<script type="text/javascript">
_spBodyOnLoadFunctionNames.push("ChangeSPSavetoSubmit()");
function ChangeSPSavetoSubmit()
{
var inputs = document.getElementsByTagName("input");
for(i = 0; i<inputs.length; i++)
{
if(inputs[i].type == "button" && inputs[i].value == "Save")
{
inputs[i].value = "Submit";
}
}
}
</script>
*edit2
基于我尝试过的其他代码
if(document.activeElement.value !== "Save" || document.activeElement.value !== "Submit"){
window.addEventListener('beforeunload', function (e) {
e.preventDefault();
e.returnValue = "";
})
}
但即使我单击“停留在此页面上”,它仍会显示弹出窗口并保存表单。从更改按钮文本的代码中,我知道 value =“Save”最初是在更改为“Submit”之前,因此应该注册正确的元素,但无论如何代码都会运行。我尝试在事件监听器内部和外部翻转 if != vs !==, var inputs = document.getElementsByTagName("input");和inputs.value!==“提交”,一切都一样。
我也试过了
var clickedo = false
if(document.activeElement.value == "Save" || document.activeElement.value == "Submit"){
clickedo = true
}
if(clickedo === false){
window.addEventListener('beforeunload', function (e) {
e.preventDefault();
e.returnValue = "";
})
}
同样的结果。我需要元素以外的东西吗?我可以检测元素何时已被点击吗?
*edit3
与朋友讨论了 on action 的想法并尝试了这个
var inputs = document.getElementsByTagName("input");
for(i = 0; i<inputs.length; i++)
{
if(inputs[i].type == "button" && inputs[i].value == "Submit")
{
inputs[i].addEventListener('click', function (e) {window.onbeforeunload = null});
}
}
window.addEventListener('beforeunload', function (e) {
e.preventDefault();
e.returnValue = "";
})
当然还是不行。
【问题讨论】:
-
那么您到底在寻找什么?自定义“您所做的更改可能无法保存”弹出窗口的方法?这是在编辑页面上吗?一份清单?
-
我想要修改代码以在单击特定按钮(保存/提交)时根本不显示弹出窗口。旧线程中的代码似乎确实做到了这一点,为该特定操作创建了一个异常,但无论出于何种原因,它不再起作用,我无法找到有关其逻辑的更多信息。这是在列表中的表单上,用于创建和编辑视图。
标签: javascript sharepoint sharepoint-2013 sharepoint-designer