@KOPC1886

Как исправить submit формы в internet explorer?

Всем привет!

Есть форма с двумя кнопками сабмит.

<form action="" id="testForm" method="post">
		<input type="submit" value="Send1">
		<input type="submit" id="twoSend" value="Send2">
	</form>


Обработчик второй кнопки -
$("#twoSend").on("click", function(e){
	if(confirm('Вы действительно хотите отправить форму?'))
	{
		$('#testForm').submit();
	}
});


В Google Chrome, Mozilla, Safari все работает хорошо.
confirm срабатывает, и при нажатии в confirm "отмена" форма не оправляется.

В Internet Explorer 9 и 10 сабмит формы все равно происходит, даже если в confirm нажимаешь на отмену.
  • Вопрос задан
  • 590 просмотров
Решения вопроса 1
IonDen
@IonDen
JavaScript developer. IonDen.com
Логично что 2 кнопки сабмит приводят вас к этой ситуации, так как по уму кнопка должна быть одна.
Чтобы исправить это, вы должны сделать иначе и перехватывать сабмит у самой формы, а не клик по кнопке. Примерно так: jsfiddle.net/IonDen/bxvwwp0r
$("#test").on("submit", function (e) {
    if(!confirm('Вы действительно хотите отправить форму?')) {
        e.preventDefault();
    }
});
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Petroveg
@Petroveg
Миром правят маленькие с#@&ки
Вариант 1
Не нужно следить за кликом на кнопке. Отслеживайте отправку формы.
И уберите кнопку с #twoSend.

$(document).on('submit', '#testForm', function (e) {
	if (!confirm('Вы действительно хотите отправить форму?')) {
		e.preventDefault();
	}
});

Вариант 2
Оставляем кнопку, раз уж нужны другие действия, и меняем ей тип

HTML
<input type="button" id="twoSend" value="Send2">
JS
$(document).on('click', '#twoSend', function (e) {
	if (confirm('Вы действительно хотите отправить форму?')) {
		this.form.submit();
	}
});
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы