Невозможно перенаправить после нажатия кнопки отправки в HTML-форме

1

Я написал проверку JS для одной из форм, где я ожидаю, что пользователь заполнит всего несколько полей. Код, как показано ниже. Я не ожидаю, что пользователь заполнит все поля. Проверка выполняется нормально, но при нажатии кнопки "Отправить" страница не перенаправляется на целевую. Цените, если кто-то может помочь мне найти расхождение здесь. Заранее спасибо.

Код JS:

 RenderDomConfig : function(e) {
        e.preventDefault();

        const discount_threshold = e.target.elements.discount_threshold.value;
        const discountThreshold = e.target.elements.discountThreshold.value;
        const cpThreshold = e.target.elements.cpThreshold.value;
        const markdownCpThreshold = e.target.elements.markdownCpThreshold.value;
        const minInventoryThreshold = e.target.elements.minInventoryThreshold.value;
        const variationMode = e.target.elements.variationMode.value;

        if (discount_threshold < 0 || discount_threshold > 100){
            alert("Please enter valid discount threshold between 0 to 100");
            e.target.elements.discount_threshold.focus();
            return false;
        }
        if (discountThreshold < -16 || discountThreshold > 100){
            alert("Please enter valid discount threshold between -16 to 100");
            e.target.elements.discountThreshold.focus();
            return false;
        }
        if (cpThreshold < -16 || cpThreshold > 100){
            alert("Please enter valid CP threshold between 0 to 100");
            e.target.elements.cpThreshold.focus();
            return false;
        }
        if (markdownCpThreshold < 0 || markdownCpThreshold > 100){
            alert("Please enter valid markdownCpThreshold threshold between 0 to 100");
            e.target.elements.markdownCpThreshold.focus();
            return false;
        }
        if (minInventoryThreshold < 0 || minInventoryThreshold > 100){
            alert("Please enter valid minimum Inventory Threshold between 0 to 100")
            e.target.elements.minInventoryThreshold.focus();
            return false;
        }
        if (variationMode == "disabled" || variationMode == "enabled" || variationMode == "" ){
            return true;
        }
        else{
            alert("Please enter valid variation mode: disabled or enabled");
            e.target.elements.variationMode.focus();
            return false;
        }
       return true;
    }
}

Вызов кода JS:

<form action='/setDomConfig?marketplaceID=<%=@marketplace%>&propertyName=<%=@property_name%>&componentName=<%=@component_name%>&simLink=<%=@sim_link%>'         onsubmit= "RenderDomConfigHelper.RenderDomConfig(event)" method="post">
  • 0
    Не имея возможности перенаправить, вы имеете в виду, что он не отправляется? Вы можете попробовать onsubmit = "return RenderDomConfigHelper.RenderDomConfig (event);" В идеале, получить все эти GET-параметры в POST и получить привязку в JS не непосредственно к самому элементу формы.
  • 0
    Это e.preventDefault(); предотвращает отправку / перенаправление формы, так что вы можете сделать это самостоятельно, и я не вижу кода, который это делает.
Показать ещё 1 комментарий
Теги:

2 ответа

0

Вам не нужно определять e.preventDefault(); ,

Просто создайте мероприятие формы отправки следующим образом:

onsubmit = "return RenderDomConfigHelper.RenderDomConfig(event);"
  • 0
    Благодарю. Это сработало.
0

Вы e.preventDefault(); формы с помощью e.preventDefault();

Один из способов сделать это - изменить тип кнопки отправки на кнопку, а затем, когда вы закончите проверку, вы можете отправить форму.

DEMO

// click event for the button
document.f.validation.onclick = (e) => {

  // validation code...



  // when done submit the form.
  document.f.submit();
};
<form name="f" action="success.php">
  <input type="button" name="validation" value="Submit">
</form>

document.f.submit() вызовет событие onsubmit формы, чтобы у вас все еще был этот код, он не будет работать, лучше, если вы сохраните его пустым или, по крайней мере, не добавите e.preventDefault(); к нему.

  • 0
    Спасибо .. Это сработало.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню