Единственный безопасный способ справиться с проверкой - это сделать это и в бэкэнде, а не только во внешнем интерфейсе, как уже упоминалось в комментариях, пользователи все еще могут обмануть ваш код внешнего интерфейса для отправки формы, в любом случае здесь есть способ предотвратить форму Передача, если элемент был удален, я использую MutationObserver для наблюдения за любыми изменениями в дочернем элементе тега <ul>
и использую флаг для предотвращения отправки формы, обратите внимание, что после 4 запускается таймер Во-вторых, чтобы удалить элемент, вы можете отправить форму до 4-го второго окна:
var submitFlag = 1;
function callback(mutationList, observer) {
mutationList.forEach((mutation) => {
switch(mutation.type) {
case 'childList':
if(mutation.removedNodes.length) { // ADD YOUR CONDITION HERE FOR FORM ELEMENTS
submitFlag = 0;
}
break;
}
});
}
var targetNode = document.querySelector("#someElement");
var observerOptions = {
childList: true,
attributes: true,
subtree: true //Omit or set to false to observe only changes to the parent node.
}
var observer = new MutationObserver(callback);
observer.observe(targetNode, observerOptions);
setTimeout(function(){
document.getElementById('el2').remove();
}, 4000);
function submitHandler(event) {
if(submitFlag === 1) {
console.log('submitted');
}
else {
event.preventDefault();
console.log("can't submit");
}
}
<div id="someElement">
<ul>
<li> element 1 </li>
<li id="el2"> element 2 </li>
<li> element 3 </li>
<li> element 4 </li>
</ul>
</div>
<form onsubmit="submitHandler(event)">
Enter name: <input type="text" name="fname">
<input type="submit" value="Submit">
</form>