SharePoint 4
SharePoint Designer 2013
Использование DFFS в Custom JS для добавления кода
В настоящее время я использую
window.addEventListener('beforeunload', function (e) {
e.preventDefault();
e.returnValue = '';
});
Это дает мне «Изменения»Вы сделали не может быть спасен. "всплывающее окно всякий раз, когда я пытаюсь отойти от страницы, которая мне нужна.У меня есть 2 проблемы, и все ресурсы, которые я нашел, не совсем их решают.
- Это всплывающее окно появляется, когда я нажимаю, чтобы сохранить мою форму
- ЕслиЯ нажимаю кнопку «Отмена», чтобы открыть это конкретное всплывающее окно, кнопка «Отправить» остается серой и недоступной для нажатия
Исправление первой проблемы должно избавить от второй, но я не могу найти решение, которое работает,Самое близкое, что я нашел, это Чтобы остановить предупреждение при отправке формы, я использовал $ ("# submit_button"). Click (function () {window.onbeforeunload = null;}); , но это изстарая ветка и не работает.
* edit
Мне пришло в голову, что этот кусок кода, который я использовал для изменения текста для той же кнопки, для которой всплывающее окно не требуется, может быть полезнымкому-то более опытному в кодировании, чем я
<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 = "";
})
}
, но он все еще показываетвсплывающее окно и сохраняет форму, даже когда я нажимаю «остаться на этой странице».Из кода для изменения текста кнопки я знаю, что значение = «Сохранить» изначально до того, как его изменили на «Отправить», так что должен быть зарегистрирован правильный элемент, но код выполняется независимо.Я попытался перевернуть if внутри и снаружи eventlistener! = Vs! ==, var input = document.getElementsByTagName ("input");и input.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
Поговорил с другом об идее действия и попробовал это
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 = "";
})
, котороеконечно все еще не работает.