Функция, сообщающая пользователю об ошибках, не показывает div ошибки

#javascript #jquery #hide #show

#javascript #jquery #скрыть #показать

Вопрос:

У меня есть эта функция для проверки поля ввода. Когда что-то не так, он должен записывать данные в элемент div (что он и делает!), А Затем раскрывать его через jQuerys $('#elementID').show('speed'); .

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

Функция выглядит следующим образом:

 function verifyKassaAle() {
    var TOS_K_alevalue = $('#TOS_K_ale').val();
    if (!(TOS_K_alevalue == "")) {
        if (TOS_K_alevalue <= 100) {
            if (TOS_K_alevalue > 0) {
                if (TOS_K_alevalue > 2) {
                    var a = confirm("Kassa ale on enemmän kuin 2%, onko tämä OK?");
                    if (a == true) {
                        if(errorlevel > 0) {
                            errorlevel = errorlevel - 1;
                        }
                        else if(errorlevel == 0) {
                            errorlevel = 0;
                        }
                    } else {
                        if(errorlevel > 0) {
                            errorlevel = errorlevel - 1;
                        }
                        else if(errorlevel == 0) {
                            errorlevel = 0;
                        }
                        showinfo = showinfo   1;
                        info = "Kassa ale on yli 2%"
                    }
                } else {
                    if(errorlevel > 0) {
                        errorlevel = errorlevel - 1;
                    }
                    else if(errorlevel == 0) {
                        errorlevel = 0;
                    }
                }
            } else {
                errorlevel = errorlevel   1;
                Errormsg = "Kassa ale on alle 0%";
            }
        } else {
            errorlevel = errorlevel   1;
            Errormsg = "Kassa ale on yli 100%";
        }
    } else {
        errorlevel = errorlevel   1;
        Errormsg = "Kassa ale on tyhjä!";
    }
    if(errorlevel == 0) {
        $('#errormsg').html('');
        $('#error').hide('fast');
        $('#TOS_K_ale_valid').html('<td><div class="ui-state-default ui-corner-all" title="Valid!" style="margin-bottom:-5px;"><span class="ui-icon ui-icon-check"></span></div></td>');
    } else {
        $('#errormsg').html(Errormsg);
        $('#error').show('fast');
        $('#TOS_K_ale_valid').html('<td><div class="ui-state-default ui-corner-all" title="Not valid!" style="margin-bottom:-5px;"><span class="ui-icon ui-icon-alert"></span></div></td>');
    }
    if(showinfo > 0) {
        $('#infotext_kale').html(info);
        $('#info').show('fast');
    } else {
        $('#infotext_kale').html('');
        $('#info').hide('fast');
    }
    $('#TOS_K_ale_valid').show('slow');
}
  

И ошибка / информация divs выглядят следующим образом:

 <div id="error" style="margin-top:5px;display:none;">
    <div class="ui-state-error ui-corner-all" style="padding:0.7em;font-size:13px;">
        <span class="ui-state-error-text">
            <span class="ui-icon ui-icon-alert" style="float: left; margin-right: .3em;margin-bottom:-5px;"></span>
        </span>
        <strong>VIKA: </strong>
        <span id="errormsg"></span>
    </div>
</div>
<div id="info" style="margin-top:5px;display:none;">
    <div class="ui-state-highlight ui-corner-all" style="padding:0.7em;font-size:13px;">
            <span class="ui-icon ui-icon-info" style="float: left; margin-right: .3em;margin-bottom:-5px;"></span>
            <strong>Huom: </strong>
            <span id="infotext"></span>
    </div>
</div>
  

ИТАК, я могу вызвать $('#error').show('fast') консоль firebugs ДО того, как эта функция была вызвана, и она хорошо отображает div. Однако после того, как я вызвал функцию, все встает на свои места.

Я потратил много часов, чтобы заставить это работать без успеха.

С уважением,

Akke

Ответ №1:

У вас есть этот селектор jQuery $('#TOS_K_ale_valid') , и в html нет элемента with id="TOS_K_ale_valid" .

Комментарии:

1. есть 😉 это просто не имеет отношения к этому случаю, поэтому я его не показывал. Это прямо рядом с полем ввода.