отключить отправку, только если действует - PullRequest
11 голосов
/ 01 марта 2011

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

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

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

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

Ответы [ 4 ]

13 голосов
/ 01 марта 2011

РЕДАКТИРОВАТЬ: я попробую снова после моего первого провала: 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');
        }
    });

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

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

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

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

Еще одна хитрость (не относящаяся к делу, но у меня была похожая проблема): если у вас есть какая-либо проверка на стороне сервера или что-то действительно происходит на сервере.

В приведенном ниже коде первое, что должна сделать ваша функция, - это ВКЛЮЧИТЬ КНОПКУ . Потому что у меня была странная ошибка (до сих пор не могу понять, как они это сделали), но в основном: проверка на стороне клиента прошла нормально (также, если у них отключен JS), и на сервере я обнаружил ошибку, я отобразил эту ошибку Ненавязчивым образом в дом на посту обратно. Таким образом, они могли попытаться исправить то, что, черт возьми, пошло не так. Но, очевидно, кнопка была отключена ... поэтому я получил миллионы жалоб. Таким образом, в соответствии с моралью истории, повторно включите кнопку, чтобы, если она будет отправлена ​​обратно на ту же страницу, ваша кнопка все еще будет работать. Yay.

0 голосов
/ 01 марта 2011

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

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

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

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