Disable submit, только если действительный

im, используя jquery с asp.net mvc. Я делаю что-то подобное, чтобы кнопка отправки была отключена при нажатии.

но если есть ошибки проверки, я не хочу, чтобы она была отключена.

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

это делает его отключенным, но даже если есть ошибки проверки. что не так?

Ответ 1

EDIT: я попробую еще раз после первого взлома: P

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

Возможно, на странице есть другие формы, и он проверяет неверный?

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

oh и вы сделали $('form'). validate(), чтобы включить проверку (которая, как я полагаю, автоматически вызывается MVC, если вы используете проверку MVC, но я не уверен в этом на 100%)?

Ответ 2

$('form'). valid() возвращает ошибку, когда я запускаю ее в консоли. Вы даже уверены, что действительная функция? AFAIK это не так.

В CSS, действительный псевдокласс применяется к определенным входам, а не к элементу формы. Я могу только предположить, что это та же самая сделка в JavaScript.

С учетом сказанного, в настоящее время проверка HTML имеет точную поддержку браузера, и вы не должны слепо полагаться на нее. Если ваша форма прост, как несколько "обязательных" полей, вы можете прокручивать каждый элемент ввода и проверять, является ли this.getAttribute('required') && this.value!= ''.

Ответ 3

Другим трюком (не особо актуальным, но у меня была аналогичная проблема) является то, что если у вас есть валидация на стороне сервера или что-то действительно происходит на сервере.

В коде, в первую очередь, ваша функция должна быть RE-ENABLE, КНОПКА. Потому что у меня была странная ошибка (все еще не могу понять, как они это сделали), но в основном: проверка на стороне клиента была прекрасной (также, если они отключены JS), а на сервере я обнаружил ошибку, я показал эту ошибку в ненавязчивый путь в доме на пост-обратно. Поэтому они могли попытаться исправить то, что, черт возьми, пошло не так. Но, очевидно, кнопка была отключена... так что я получил миллионы жалоб. Поэтому, мораль из истории, снова включите кнопку, чтобы, если она вернется на ту же страницу, ваша кнопка все равно будет работать. Yay.

Ответ 4

Вы использовали другой плагин jquery для использования функции "valid()" в вашей форме? Поскольку $('form').valid() ничего не значит в Javascript с ядром jquery lib