add / removeClass для отображения массива - sonarqube - PullRequest
0 голосов
/ 30 апреля 2019

Я анализирую свой код с помощью sonarqube и обнаруживаю ошибку в следующей функции:

$(function () {
     $("#SSNCollection input[type=text]").keydown(function (evt) {

         var IsNullEmptyText = "true";
         var ssntxtArrayText = [];
         var txtLength = 0;
         $("#SSNCollection input[type=text]").each(function () {
             var _tempValues = $(this).val().toString().replace(/[-]/g, '').trim();
             if (!isNaN(this.value.toString().replace(/[-]/g, '').trim())) {
                        var _temptxtlength = this.value.toString().replace(/[-]/g, '').trim().length;

                        ssntxtArrayText.push(_tempValues);
                    }
                });
                $.each(ssntxtArrayText, function (index, value) {
                    if (value.length >= 0) {
                        $('#resultValidation').css({
                            'display': 'none',
                        });
                        return false;
                    } else {
                        $("#resultValidation").removeAttr("style");
                    }

                });
            });
        });

проблема начинается с if (value.length >= 0) {.Поскольку длина массива всегда будет> = 0, if и следующие else не нужны.таким образом, я изменил выражение на

$.each(ssntxtArrayText, function (index, value) {
       $('#resultValidation').css({
              'display': 'none',
       });
       return false;
});

. Теперь моя проблема заключается в том, что мне говорят, что я должен использовать addClass('hidden') и removeClass('hidden'), так как в конце концов мне может понадобиться оператор else.но я не уверен, как бы я использовал их в этом случае.есть идеи?спасибо!

1 Ответ

1 голос
/ 30 апреля 2019

Класс скрытый обычно включается в CSS-фреймворки, такие как Bootstrap.Если вы не используете Bootstrap ( или не уверены ), просто добавьте следующий CSS-код в файл css вашего проекта.

.hidden { display:none!important; }

или встроенную HTML-версию

<style>.hidden { display:none!important; }</style>

На заметку об использовании условной логики - после просмотра вашего кода я могу подтвердить, что переменная value не возвращает массив.Фактически он возвращает строковое значение, что означает, что проверка, является ли длина больше или равна 0, является подходящей.Если вы хотите проверить длину массива перед запуском $.each, просто оберните $.each в оператор if(ssntxtArrayText.length > 0).В следующем примере показана правильная реализация использования .addClass () & .removeClass () и проверки наличия в массиве значений перед запуском.

if(ssntxtArrayText.length > 0) {
    $.each(ssntxtArrayText, function (index, value) {
        if (value.length >= 0) {
            $('#resultValidation').addClass('hidden'); //hide
            return false;
        } else {
            $("#resultValidation").removeClass('hidden'); //unhide
        }
    });
}

Примечание: Если вы проверяете действительные номера социального страхования, я рекомендую убедиться, что значение имеет длину 9 символов.Это будет сделано так: if (value.length == 9) {

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