我的问题如下。我有一个字段,用户应该能够输入一个数字,但只能在0-23之间。现在如果我输入一个有效的数字,它就可以了,但当我输入一个无效的数字并在框外单击时,文本会移回原来的位置,从而覆盖用户输入。如何修复此项,以便在输入数字后文本保持不变?
#whole {
bottom: 10px;
}
input {
width: 295px;
font-size: 18px;
padding: 10px 0px 10px 5px;
display: block;
border: none;
border-bottom: 1px solid #757575;
}
input:focus {
outline: none;
}
label {
color: #999;
font-size: 18px;
font-weight: normal;
position: absolute;
pointer-events: none;
left: 5px;
top: 10px;
transition: 0.2s ease all;
}
/* active state */
.highlight {
position: absolute;
height: 60%;
width: 100px;
top: 25%;
left: 0;
pointer-events: none;
opacity: 0.5;
}
/* active state */
input:focus ~ .highlight {
animation: inputHighlighter 0.3s ease;
}
/* ANIMATIONS ================ */
@keyframes inputHighlighter {
from {
background: #5264AE;
}
to {
width: 0;
background: transparent;
}
}
input:focus ~ label,
input:valid ~ label {
top: -20px;
font-size: 14px;
color: #5264AE;
}
select {
width: 300px;
font-family: inherit;
font-size: 18px;
padding-top: 10px;
padding-bottom: 10px;
padding-right: 30px;
display: block;
color: #999;
border: none;
border-bottom: 1px solid #757575;
}
select:focus {
outline: 0;
}

<div id="whole">
<form>
<div class="group">
<input type="number" id="hour" min="0" max="23" required>
<label>Hour of the day (0-23)</label>
</div>
</form>
</div>
&#13;
答案 0 :(得分:0)
您可以使用无效选择器处理它 尝试将此添加到css
input:invalid ~ label {
top: -20px;
font-size: 14px;
color: #5264AE;
}
尝试使用this article
建议的超出范围选择器