Проблема в том, что ваш оператор if
находится внутри l oop. Даже при отображении alert()
оператор else
запускается при последовательных итерациях и отправляет форму.
Чтобы исправить это хранилище, укажите логический флаг состояния в l oop, а затем проверьте, что после выполнение l oop завершается.
Обратите внимание на использование ненавязчивого обработчика событий в приведенном ниже примере вместо устаревшего встроенного атрибута onsubmit
, что является плохой практикой, и ее следует по возможности избегать .
document.querySelector('#deleteexposedform_1').addEventListener('submit', function() {
let deleteExposedForm = this;
let allInputInForm = deleteExposedForm.querySelectorAll("input");
var valid = true;
for (let i = 0; i < allInputInForm.length; i++) {
if (allInputInForm[i].name == "hasConnectedProducts" && allInputInForm[i].value == "yes") {
valid = false;
}
}
if (!valid) {
alert("The Service you are trying to delete has connected consumers. Cannot be deleted");
return false;
} else {
deleteExposedForm.submit();
}
})
<form id="deleteexposedform_1" action="deleteexposed" method="POST">
<input type="hidden" name="selectedplatformtodeleteexposed" id="selectedplatformtodeleteexposed_1" value="Platform 1">
<input type="hidden" name="selectedexposedtodeletename" id="selectedexposedtodeletename_1" value="Service with qualities and aspects">
<input type="hidden" id="hasConnectedProducts1" name="hasConnectedProducts" value="yes">
<input type="hidden" id="ConnectedProducts1" name="ConnectedProducts" value="Test ingest with same qa">
<input type="hidden" name="selectedexposedtodeletetype" id="selectedexposedtodeletetype_1" value="EPS">
<button class="links" id="b_deleteexposedform_1" title="Press to delete the exposed service on the selected platform">delete</button>
</form>
Поскольку вы пометили это jQuery, обратите внимание, что вы можете сделать те же логи c гораздо более краткими:
$('#deleteexposedform_1').on('submit', function(e) {
var hasConnectedProducts = $(this).find('input[name="hasConnectedProducts"]').val();
if (hasConnectedProducts === 'yes') {
alert("The Service you are trying to delete has connected consumers. Cannot be deleted");
e.preventDefault();
}
})
<form id="deleteexposedform_1" action="deleteexposed" method="POST">
<input type="hidden" name="selectedplatformtodeleteexposed" id="selectedplatformtodeleteexposed_1" value="Platform 1">
<input type="hidden" name="selectedexposedtodeletename" id="selectedexposedtodeletename_1" value="Service with qualities and aspects">
<input type="hidden" id="hasConnectedProducts1" name="hasConnectedProducts" value="yes">
<input type="hidden" id="ConnectedProducts1" name="ConnectedProducts" value="Test ingest with same qa">
<input type="hidden" name="selectedexposedtodeletetype" id="selectedexposedtodeletetype_1" value="EPS">
<button class="links" id="b_deleteexposedform_1" title="Press to delete the exposed service on the selected platform">delete</button>
</form>