валидация полей

301
02 декабря 2017, 11:01

Доброго времени суток, есть скрипт на проверку поля логин к примеру

var jVal = {
    'login' : function() {

        var nameInfo = $('#login');
        var ele = $('input#login');
        if(ele.val().length < 3 || ele.val().length > 32) {
            jVal.errors = true;
            nameInfo.removeClass('correct').addClass('error_form').show();          
        }else{
            nameInfo.removeClass('error_form').addClass('correct').show();
        }
        var  patt = /^[a-zA-Z0-9._-]+$/g;
        if(!patt.test(ele.val())) {
            jVal.errors = true;
            nameInfo.removeClass('correct').addClass('error_form').show();          
        }else{
            nameInfo.removeClass('error_form').addClass('correct').show();
        }
    },
$('#login').change(jVal.login); // вызывает обработку

Работает не совсем корректно, идет проверка на кол-во символов, и на разрешаемые символы, но работает один только в зависимости что вводить. Как комплексно настроить проверку дабы выполнялись все условия?

Answer 1

Вам не надо пытаться показывать форму после каждой проверки. Надо сначала все проверить, и в конце после непосредственных проверок показать или не показать.

можно сделать как то так (не проверял).

var jVal = {
'login' : function() {

    var nameInfo = $('#login');
    var ele = $('input#login');
    var errors = false;
    nameInfo.removeClass("correct error_form");
    if(ele.val().length < 3 || ele.val().length > 32) {
        errors = true;
    }
    var  patt = /^[a-zA-Z0-9._-]+$/g;
    if(!patt.test(ele.val())) {
        errors = true;
    }
    var cls = errors ? "error_form" : "correct";
    nameInfo.addClass(cls).show();
},

но повторюсь, каков смысл проверять отдельно длину, если регуляркой ее также можно проверить /^([\w-.]){3,32}$/ ? Вы же не выводите различные сообщения на каждый тип проверки.

READ ALSO
Не правильно работает intersectsBox в threejs

Не правильно работает intersectsBox в threejs

Всем привет, есть проблема с методом intersectsBoxЯ его исользую чтобы найти внешние стороны у здания, если они не пересикаются с полом в самом здании...

271
Pattern для input number

Pattern для input number

Как ограничить ввод положительными числами от 1 до 1000Регулярное выражение

300
Почему alert(&ldquo;hi there&rdquo;) не работает внутри yii?

Почему alert(“hi there”) не работает внутри yii?

Всем привет в большом проекте нужно менять js код но мои попытки подключить js все неудачныКакие варианты я попробовал

244