2016-06-29 4 views
0

У меня есть форма, я пытаюсь остановить пользователей от двойного представления с помощью javascript. По какой-то причине, даже когда функция обработчика возвращает false и вызывается event.preventDefault, форма все равно будет передаваться несколько раз. Кто-нибудь знает, почему? Также как я делаю эту работу по назначению?Javascript - Form Submit not stopping

document.getElementById('my_form').addEventListener("submit", function(evt){ 
    if (validationFunction(document.getElementById('submit_button')) == false) { 
     evt.preventDefault(); 
     return false; 
    } 
}); 

Функция validationFunction() { возвращение ложным }

<form method="post" id="my_form"> 
    <input name='textbox'> 
    <input type="submit" id="submit_button"> 
</form> 
+0

Что происходит в 'validationFunction'? Он проверяет, была ли форма уже отправлена? Вам не нужно публиковать все это, достаточно, чтобы это было [mcve]. –

+0

Функция проверки возвращает true или false – catbadger

+0

Да, это было ясно из кода выше;). Недостаточно воспроизвести проблему. Не могли бы вы разместить достаточно кода, чтобы сделать ваш пример ** Complete ** (см. Ссылку в моем предыдущем комментарии)? –

ответ

1

Попробуйте простым способом. Как это

HTML

<form id="my_form"> 
<input name='textbox'> 
<input type="button" id="submit_btn"> 
</form> 

JS

document.getElementById("submit_btn").addEventListener("click", function(){ 

document.getElementById("my_form").submit(); // if validation is true run this 
}); 
+0

Нет. Должен использовать addEventListener – catbadger

+0

Попробуйте отредактировать. Затем добавьте свою функцию проверки. –

+0

Теперь вы не останавливаете отправку. DX – catbadger

1
document.getElementById('my_form').addEventListener("submit", function(evt){ 
    if (validationFunction(document.getElementById('submit_button')) == false) { 

     // anything here 

     evt.preventDefault(); 
     return false; 
    } 

    // anything here 

    event.preventDefault(); 
}); 
+0

не будет ли это всегда убивать событие? – catbadger

+0

Что значит «убить событие»? – Kairat

+0

он никогда не будет правильно исполнен. потому что вы предотвращаете дефолт. Я понимаю, что вы хотите сделать это, вернув false. – catbadger