Каков наилучший подход для (на стороне клиента) отключения кнопки отправки?

header( "refresh:5;url=wherever.php" );

это способ php для установки header, который перенаправит вас на wherever.php за 5 секунд


Помните, что header () необходимо вызвать до фактический вывод отправляется либо обычными тегами HTML, пустые строки в файле, либо из PHP. Очень распространенная ошибка для чтения кода с включением или требованием, функциями или другой функцией доступа к файлам, а также пробелы или пустые строки, которые выводятся перед вызовом header (). Та же проблема существует при использовании одного файла PHP / HTML. (источник php.net )

blockquote>
10
задан Jason Bunting 5 September 2008 в 16:15
поделиться

7 ответов

Для всех кнопок отправки, с помощью JQuery, это было бы:

$('input[type=submit]').click(function() { this.disabled = true; });

Или могло бы быть более полезно сделать так на представлении формы:

$('form').submit(function() {
    $('input[type=submit]', this).attr("disabled","disabled");
});

Но я думаю, что мы могли дать лучший ответ на Ваш вопрос, если бы мы знали немного больше о контексте.

Если это будет запросом ajax, то необходимо будет удостовериться, что Вы включаете кнопки отправки снова на любой успешности или неуспешности.

Если это - стандартное представление формы HTTP (кроме отключения кнопки с JavaScript), и Вы делаете это к безопасности от нескольких представлений той же формы, то необходимо иметь своего рода контроль в коде, который имеет дело с отправленными данными, потому что отключение кнопки с JavaScript не могло бы предотвратить несколько представлений.

11
ответ дан 3 December 2019 в 16:32
поделиться

Вы могли сделать что-то вроде этого:

$('form').submit(function() {
    $(this)
        .find(":submit,:image")             // get all the submit buttons
        .attr({ disabled : 'disabled' })    // disable them
        .end()                              // go back to this form
        .submit(function() {                // change the onsubmit to always reject.
            return false;
        })
    ;
});

Преимущества этого:

  • Это будет работать со всеми Вашими формами со всеми методами представления:
    • нажатие отправлять элемент
    • нажатие Enter, или
    • вызов form.submit() из некоторого другого кода
  • Это отключит, все отправляют элементы:
    • <input type="submit"/>
    • <button type="submit"></button>
    • <input type="image" />
  • это действительно коротко.
8
ответ дан 3 December 2019 в 16:32
поделиться

Я предполагаю, что Вы не хотите, чтобы они поразили кнопку отправки несколько раз, в то время как отправление обрабатывает.

Мой подход должен был просто скрыть кнопку полностью и отобразиться, своего рода индикатор состояния (анимировал gif, и т.д.), вместо этого.

Вот очень изобретенный пример (это находится технически в прототипе, но я думаю, что версия jQuery была бы очень похожа):

<html>
    <head>
        <script type="text/javascript" src="include/js/prototype.js"></script>

        <script type="text/javascript">
            function handleSubmit()
            {
                $('submit').hide();
                $('progressWheel').show();
                return true;
            }
        </script>
    </head>
    <body>
        <img src="include/images/progress-wheel_lg.gif" id="progressWheel" style="display:none;"/>
        <input type="submit" name="submit" id="submit" value="Submit" onclick="handleSubmit();"/>
    </body>
</html>
4
ответ дан 3 December 2019 в 16:32
поделиться

в JQuery:

$('#SubmitButtonID').click(function() { this.disabled = true; });
1
ответ дан 3 December 2019 в 16:32
поделиться

Как насчет

Код позади:

btnContinue3. Атрибуты. Объект ("onclick") = "disableSubmit ()"

JavaScript:

function disableSubmit() {
    document.getElementById('btnContinue3').onclick = function() { 
        alert('Please only click once on the submit button!'); return false;
    };
}

Это не решает проблему того, что происходит, если обратная передача испытывает таймаут, но кроме которого она работала на меня.

0
ответ дан 3 December 2019 в 16:32
поделиться

Существует три способа отправить форму, которая должна быть покрыта. Используйте и предложения David McLaughlin и Jimmy. Каждый отключит элемент формы кнопки отправки, в то время как другой отключает основную HTML-форму, отправляют.

Для третьего они не отключат JavaScript от выполнения form.submit (). OnSubmit="return false" метод только применяется, когда пользователь нажимает кнопку отправки или нажимает Enter во входном элементе формы. Клиентские сценарии должны будут быть обработаны также.

0
ответ дан 3 December 2019 в 16:32
поделиться

На вещи знать то, что Вы не должны отключать кнопку, прежде чем форма будет отправлена. При отключении кнопки с помощью JavaScript в событии OnClick, можно проиграть, форма отправляют.

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

1
ответ дан 3 December 2019 в 16:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: