2014-01-13 4 views
0

Я успешно использовал JavaScript confirm() с помощью обработчика событий onClick.document.form.submit() with confirm()

<input type="submit" onClick="return confirm(....);" /> 

И я также успешно используется confirm с помощью onSubmit

<form onSubmit="return confirm(....);"> 

Теперь мой вопрос, есть одна конкретная ситуация, в которой я хочу отправить форму, не щелкая и просто с помощью document.myform.submit(), но когда когда-либо я это делаю, он, кажется, обходит подтверждение в событии onSubmit.

Как использовать document.whateverform.submit() вместе с подтверждением()?

+1

Я сильно подозреваю, что это дубликат, вы уже искали ответ? – jcollum

+0

'if (confirm (......)) {document.whateverform.submit();}' –

+0

Я определенно искал, и я могу найти ответы на вопрос о том, как использовать подтверждение или как отправить форму, используя submit() , и многие вещи похожи, но как только я собрал их вместе, это единственный раз, когда он не работает, и я не могу найти ответ на StackOverflow ... или, может быть, я не ищу достаточно сложно. – BenjArriola

ответ

1

События запускаются, когда пользователь выполняет действие, которое вызывает изменение состояния. Браузеры не могут позволить обработчику onsubmit запускаться, когда функция .submit вызывается непосредственно через JavaScript. Подумайте о том, что случилось бы, чтобы закодировать так:

<form onsubmit="if(someCondition) { this.submit(); }"> 
... 
</form> 

Если событие выпустили из Java-управляемой представить, что бы вызвать бесконечный цикл, поскольку onsubmit вызовы представить, что вызывает onsubmit, и так далее. Я знаю, что некоторые люди могут задаться вопросом, хорошо ли это, но я это видел.

Вы, вероятно, следует избегать прямых вызовов form.submit вообще и заменить их с помощью вызова одной и той же функции, как и так:

function confirmFormSubmission() { 
    return confirm('Are you sure you want to do this?'); 
} 

function submitForm(f) { 
    if (confirmFormSubmission()) { 
    f.submit(); 
    } 
} 

... 

<form onsubmit="return confirmFormSubmission()"> 
.... 
</form> 

Любое место в коде JavaScript, который вызывает form.submit, замените его с вызовом submitForm, чтобы убедиться, что он работает последовательно.