правильно отключить кнопку отправки - PullRequest
1 голос
/ 24 мая 2009

это код, который я использую для отключения кнопки

            $("#btnSubmit").attr('disabled', 'disabled')
            $("#btnSubmit").disabled = true;

и это моя кнопка отправки

<input id="btnSubmit" class="grayButtonBlueText" type="submit" value="Submit" />

кнопка, хотя выглядит отключенной, вы все равно можете нажать на нее .. Это протестировано с FF 3.0 и IE6

Я что-то здесь не так делаю?

Ответы [ 3 ]

4 голосов
/ 24 мая 2009

Если это реальная форма, т.е. не обработано событие javascript , это должно работать.

Если вы обрабатываете кнопку с событием onClick, вы, вероятно, обнаружите, что она все еще срабатывает. Если вы делаете это, вам лучше установить переменную в вашем JS, например buttonDisabled, и проверять эту переменную при обработке события onClick.

В противном случае попробуйте

$(yourButton).attr("disabled", "true");

И если после всего этого вы все еще не получаете ничего, вы можете вручную «сломать» кнопку с помощью jquery (сейчас это становится серьезным):

$(submitButton).click(function(ev) {
    ev.stopPropagation();
    ev.preventDefault();
});

Это должно остановить кнопку, действующую как кнопка.

1 голос
/ 24 мая 2009

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

$('#btnSubmit').unbind('click').click( function() { return false; } );

Вам нужно будет снова добавить обработчик кликов, когда (если) вы снова включите кнопку.

0 голосов
/ 24 мая 2009

Вам нужно обработать кнопку назад / назад в браузере. Пример ниже

1) Создать form.js:

(function($) {
    $.enhanceFormsBehaviour = function() {
        $('form').enhanceBehaviour();
    }

    $.fn.enhanceBehaviour = function() {
        return this.each(function() {
            var submits = $(this).find(':submit');
            submits.click(function() {
                var hidden = document.createElement('input');
                hidden.type = 'hidden';
                hidden.name = this.name;
                hidden.value = this.value;
                this.parentNode.insertBefore(hidden, this)
            });
            $(this).submit(function() {
                submits.attr("disabled", "disabled");
            });         
            $(window).unload(function() {
                submits.removeAttr("disabled");
            })
         }); 
    }
})(jQuery);

2) Добавить в HTML:

<script type="text/javascript">
    $(document).ready(function(){
        $('#contact_frm ).enhanceBehaviour();
    });
</script>

<form id="contact_frm" method="post" action="/contact">
   <input type="submit" value="Send" name="doSend" />
</form>

Готово:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...