[Решено] Показать все валидационные ошибки сразу

Тема в разделе "JavaScript", создана пользователем dwm, 12 окт 2016.

Статус темы:
Закрыта.
  1. dwm

    dwm

    Регистрация:
    31 окт 2012
    Сообщения:
    134
    Симпатии:
    14
    есть сайт:
    https://sonnydesigns.com/town29498/

    там форма. при нажатии на rush me order, если не заполнены поля, должны всплывать подсказки об ошибках во всех незаполненных полях. они всплывают только по нажатию на поле.
    пожалуйста, помогите. я сломал мозг.

    сам валидатор:

     
    Lasted edited by : 12 окт 2016
  2. $iD

    $iD Команда форума

    Регистрация:
    13 мар 2012
    Сообщения:
    3.350
    Симпатии:
    1.378
    Код:
    this.validate = function(name)
        {
            this.validated = false;
            //clear existing errors
            this.clearErrors();
            
            //final values to submit
            var values = {};
            
            //loop through all inputs to validate and get value
            for(var i in this.inputs)
            {
                var input = this.inputs[i];   
                var name = input.name;
                var val = input.getValue();
                
                if(this.isHidden(name))
                    continue;
                
                //validate the field name against field requirements and specific
                //validation functions like: validateShipAddress
                val = this.validateField(name, null, true);
                
                //if no error was set on the field, add to the value list
                if(!this.hasInputError(name))   
                    values[name] = val;
            }
            
            //execute user defined function if exists
            if(typeof(this.onValidate) == 'function')
                this.onValidate();
            
            if(this.hasError())
                return false;
            else
                this.isValidated = true;
            
            return values;
        }
    не тестил, но где-то так: val = this.validateField(name, null, true);
     
    dwm нравится это.
  3. dwm

    dwm

    Регистрация:
    31 окт 2012
    Сообщения:
    134
    Симпатии:
    14
    это куда написать-то?

    теперь показывает только одно поле... но уже показывает)
    как сделать чтобы незаполненные поля подсвечивались ошибками все сразу?
     
    Последнее редактирование: 12 окт 2016
  4. $iD

    $iD Команда форума

    Регистрация:
    13 мар 2012
    Сообщения:
    3.350
    Симпатии:
    1.378
    они как бы показываются все, просто по очереди, т.е. одна ошибка показалась, потом закрылась и показалась другая и т.д. пока не останется только последняя.

    по идее, надо удалить:
    Код:
    if(this.errorNode.parentNode)
               this.clear();
    но будут проблемы со скрытие послем клика.

    вообще, у вас будет ад в UI с таким валидатором, когда покажутся все сразу.
     
  5. dwm

    dwm

    Регистрация:
    31 окт 2012
    Сообщения:
    134
    Симпатии:
    14
    удалил. без изменений
     
  6. $iD

    $iD Команда форума

    Регистрация:
    13 мар 2012
    Сообщения:
    3.350
    Симпатии:
    1.378
    значит не это..

    вот это:
    Код:
    if(this.validator.curErrorPop)
                this.validator.curErrorPop.clear();
     
    dwm нравится это.
  7. dwm

    dwm

    Регистрация:
    31 окт 2012
    Сообщения:
    134
    Симпатии:
    14
    Спасибо!!!!! Теперь буду работать со стилями. Ты был прав. Такая срака получилась, что дальше не куда
     
Статус темы:
Закрыта.