Мой совет - не использовать! Важно, но поймите, как вместо этого каскады CSS ... в Интернете есть лучшие ресурсы для этого, чем я -
https://developer.mozilla.org/en-US/docs/Learn/CSS/Introduction_to_CSS/Cascade_and_inheritance
В моемПример фрагмента, который я сделал, позволил себе создать обработчик JQuery, чтобы текстовое поле ввода знало, когда оно было заполнено, и добавляло (или удаляло) заполненный класс к себе onkeyup - вы должны добавить обработчик для этого где-нибудь, если он уже не где-то запускаетсяв вашем коде (я думаю, вы уже делаете).
Я добавил эти комбинации классов в CSS, чтобы они не выделялись красным цветом (внизу таблицы стилей во фрагменте).
Вы использовали border-color, но фактическое свойство, которое вы хотели переопределить, было сокращено в CSS, поэтому я переключил их, чтобы они все сокращенно и гарантированно влияли на одни и те же свойства.Я не могу вспомнить, как это работает на моей голове, но это могло быть проблемой ...
$( "input[type=text]" ).keyup(function() {
if(this.value != '') $(this).addClass('filled');
else
$(this).removeClass('filled')
});
$("form").submit(function(){
var $requiredUnfilledItems = $('.required:not(.filled)');
if ($requiredUnfilledItems.length > 0)
{$requiredUnfilledItems.each( function(){$(this).addClass('warning-border');
});
}
else { alert("You entered in " + this.name.value); }
return false;})
.warning-border {
outline: none !important;
border: thin solid red;
box-shadow: 0 0 10px red;
}
.warning-border, .select2-container.warning-border {
outline: none !important;
border: thin solid red;
box-shadow: 0 0 10px red;
}
.warning-border.filled, .select2-container--default .select2-selection--single {
width: 100%;
padding-left: 4px;
height: 100%;
border: thin solid lightgray;
height: 30px;
box-shadow: none;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<form action="#" onsubmit="">
<input id="name" type="text" class="required filled" value="Name"/>
<input type="submit">
</form>