【发布时间】:2021-04-11 11:24:13
【问题描述】:
当输入被聚焦或填充时,我尝试构建将占位符移动到输入顶部的表单。但是我在同一页面上有多个输入的问题。我不知道如何针对特定的(当前使用)。一切正常,但我的 JS 代码会影响我的页面/表单上的所有输入。因此,当我填写例如第二个输入时,所有标签都会显示。我可以使用#id_name 来做到这一点,但我的页面有很多表单和输入,我想在整个网站上使用这个功能。如何定位当前使用的唯一输入?
这是我的 JS
$('.h-placeholder').keyup(function() {
// If input is not empty
if ($(this).val().length == 0) {
// hide label
$('.hideme label').css({"opacity": "0"});
} else {
// Otherwise show it
$('.hideme label').css({"opacity": "1"});
}
}).keyup();
HTML
<div class="row">
<div class="col-12">
<div class="gray-input hide-placeholder hideme">
<input class="h-placeholder" required type="text" id="zaw" name="zaw" placeholder="Zaw">
<label class="label-h-placeholder" for="zaw">Zaw</label>
</div><!--.gray input-->
<div class="gray-input hide-placeholder hideme">
<input class="h-placeholder" required type="number" id="wart" name="wart" placeholder="Wart">
<label class="label-h-placeholder" for="wart">Wart</label>
</div><!--.gray input-->
</div>
</div><!--.row-->
还有我的 CSS
.hide-placeholder{
position: relative;
}
.hide-placeholder > label {
opacity: 0;
position: absolute;
top: -5px;
background: #efeff3;
padding: 0 8px;
border-radius: 5px;
left: 3%;
transition: opacity .2s ease-out;
-moz-transition: opacity .2s ease-out;
-webkit-transition: opacity .2s ease-out;
-o-transition: opacity .2s ease-out;
}
.hide-placeholder input:focus + label,
.hide-placeholder textarea:focus + label{
opacity: 1;
transition: opacity .2s ease-out;
-moz-transition: opacity .2s ease-out;
-webkit-transition: opacity .2s ease-out;
-o-transition: opacity .2s ease-out;
}
.hide-placeholder input:focus::placeholder,
.hide-placeholder textarea:focus::placeholder{
opacity: 0;
}
【问题讨论】:
标签: javascript html jquery css placeholder