ASP-проблемы на стороне клиента - PullRequest
0 голосов
/ 23 февраля 2010

У меня есть два вопроса относительно проверки на стороне клиента в ASP, относящихся к следующей настройке:

У меня есть этот бит javascript, который применяет стили ошибок к элементам формы, если они не в состоянии проверить:

        var val = Page_ClientValidate();

        if (!val) {
            var i = 0;
            for (; i < Page_Validators.length; i++) {
                if (!Page_Validators[i].isvalid) {
                    $("#" + Page_Validators[i].controltovalidate).parent().removeClass("valid").addClass("invalid");
                } else {
                    $("#" + Page_Validators[i].controltovalidate).parent().removeClass("invalid").addClass("valid");
                }
            }
        }

        return val;

Вызов parent () ссылается на asp: Panel, которая охватывает каждый отдельный элемент формы и его валидаторы. Моя проблема в том, что, если я назначаю более одного валидатора для элемента управления, и первый валидатор завершается неудачно, но второй проходит, стиль 'valid' применяется последним из-за порядка операций. У меня есть два вопроса по этому поводу. Важно отметить, что я чрезвычайно новичок в JavaScript и ранее просто злоупотреблял обратными ссылками, чтобы выполнить всю мою проверку.

Вопрос № 1:

Есть ли хороший источник документации для проверки на стороне клиента? Кажется, я ничего не могу найти. Например, откуда происходит этот вызов Page_ClientValidate ()? Какие еще звонки я могу сделать? А как насчет Page_Validators? Какие члены существуют в controltovalidate? Есть ли? Это просто элемент DOM? Я знаю, что я хочу сделать в своей голове, чтобы решить эту проблему:

get parent

valid = true

for each validator in parent
    if validator does not validate
        valid = false
        break

if valid
    apply valid style
else
    apply invalid style

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

Вопрос № 2:

Если я получу хороший ответ на вопрос № 1, я сам это выясню, но ...

Как мне сделать то, что я описал в псевдокоде выше, или это невозможно сделать так, как я изложил?

1 Ответ

0 голосов
/ 23 февраля 2010

Вопрос № 1: MSDN является отличным источником информации по этому вопросу, начните здесь .

Вопрос № 2: Попробуйте этот подход:

    var val = Page_ClientValidate();

    if (!val) {
        $(".invalid").removeClass("invalid"); //Remove invalids
        var i = 0;
        for (; i < Page_Validators.length; i++) {
            if (!Page_Validators[i].isvalid) {
                $("#" + Page_Validators[i].controltovalidate).parent().removeClass("valid").addClass("invalid");
            } else {
                $("#" + Page_Validators[i].controltovalidate).parent(":not(.invalid)").addClass("valid");
                //Only apply to those not already invalid
            }
        }
    }

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