Скрытие контента, когда происходит ненавязчивая проверка jQuery - PullRequest
1 голос
/ 11 февраля 2012

Я пишу сайт MVC3 и использую ненавязчивую проверку JQuery для проверки своих форм. Я построил каркас формы в приложении, который показывает аккуратное всплывающее окно «справки» всякий раз, когда я нажимаю на поле формы. Все работает в этой области, и я доволен этим.

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

Standard form field

Когда я нажимаю на поле, отображается следующее:

Form field with help text shown

И когда происходит проверка, происходит следующее:

Form field with validation shown

Мое решение состоит в том, чтобы просто скрыть текст справки при проверке (для этого я использую разделяемую функцию, назовем ее «hideDescription ()»). Каждая форма на сайте использует одну и ту же платформу, поэтому я хочу иметь возможность вызывать hideDescription () всякий раз, когда происходит ненавязчивая проверка, в любой момент.

Мой JavaScript разделен на несколько файлов, например:

/ Review / Create / - использует createReview.js / Review / Read / - использует readReview.js

Они оба также включают "shared.js". Я надеялся, что смогу расширить плагин ненавязчивой проверки jquery в файле shared.js и применить его к каждой форме на сайте за один раз ... но я немного растерялся. Это насколько я получил:

$("form").validate({
    invalidHandler: function (form, validator) {
        hideDescriptions();
    }
});

Но я более чем осознаю, что это не сработает. Я предполагаю, что ненавязчивый валидатор присоединяет валидатор ко всем формам по умолчанию, видя, как будто я не должен присоединять его сам?

Можно ли как-нибудь расширить ненавязчивую проверку для выполнения общего обратного вызова, если форма недействительна?

Ответы [ 2 ]

2 голосов
/ 11 февраля 2012

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

$("form").bind("invalid-form.validate", function () {
    hideDescriptions();
});

Однако он почти бесполезен, поскольку всякий раз, когда пользователь снова нажимает на поле, появляется описание!

Ричард также поднял правильную точку -оценим работу моих форм:)

1 голос
/ 11 февраля 2012

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

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

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