Кнопка формы HTML, чтобы остановить несколько представлений - PullRequest
1 голос
/ 28 сентября 2011

У меня есть эта форма, которая отправляет work.php.

Что я хочу сделать, это отключить кнопку отправки при отправке формы, а затем повторно включить ее через 5 секунд или около того, поэтому я не могуя не получаю несколько сообщений.

Как я могу это сделать?

Кроме того, если я нажму клавишу ввода в одном из текстовых полей, пока кнопка отправки не активна, то она перенаправит менядо work.php, что не хочет происходить.

 <form method="post" action="work.php">
        <strong>Message:</strong>
        <input type="text" id="message" name="message" class="message" />
        <input type="submit" id="submit" onClick="this.value='Processing form';this.disabled=true;if(Submitting()){this.form.submit()}else{this.value='Submit';this.disabled=false;}" value="Submit" />
</form>

Ответы [ 3 ]

1 голос
/ 28 сентября 2011
<form id="your-form">
    <input type="submit" id="submit" onclick="doSubmit(this);" value="Submit" />
</form>
<script>
    function doSubmit(el) {
        var frm = document.getElementById('#your-form');
        el.value = 'Processing...';
        el.disabled = true;
        frm.submit();
        setTimeout(function(el) {
            el.value = 'Submit';
            el.disabled = false;
        }, 5000);
    }
</script>

Это один из способов сделать это. Есть несколько других.

0 голосов
/ 28 сентября 2011

Если вы используете Ajax, вы используете « Ajax Manager Plugin. » Это предотвратит двойные запросы.

Таким образом, вам не нужно беспокоиться о том, что пользователь нажал клавишу ввода иликнопка отправки несколько раз.Только один запрос будет обработан до тех пор, пока он не будет завершен (но к тому времени я предполагаю, что сообщение об успехе и очистка формы произойдет)

0 голосов
/ 28 сентября 2011

Вам не нужно беспокоиться об этом. Если пользователь спамит отправку формы каким-либо образом (нажав «Отправить» или нажав «Ввод»), на сервер отправляется только один полный запрос - каждый раз, когда отправка инициируется, он сбрасывает POST и запускается снова.

Обратите внимание, что использование JavaScript для остановки этого поведения довольно плохо, учитывая, что невероятно легко отключить JS и спам, что является одной из причин, по которым браузеры допускают только одну отправку POST за раз.

Если вы используете AJAX (который вы не указали), вам следует использовать ответ @ drrcknlsn.

...