gpt4 book ai didi

javascript - 在输入字段内显示/隐藏清除图标无法正常工作

转载 作者:行者123 更新时间:2023-11-27 23:03:04 25 4
gpt4 key购买 nike

我创建了一个带有清除输入文本的图标的输入。

我最初将其设置为显示:无。当您专注于输入时,会出现我想要的清除图标,但是当您单击清除图标时它会消失并且不会清除输入文本,但是只有当您再次关注输入时才会重新出现,这是我不想要的它这样做,因为它应该只在您点击输入之前保持可见,然后它应该隐藏...

所以用例应该是:

  1. 清除图标最初应设置为隐藏(在 css 中或可以是 jQuery)
  2. 当您专注于输入时应显示清晰的图标
  3. 当您点击输入框外时,清除图标应该再次隐藏

我的脚本运行不正常,我自己尝试了多种方法来解决这个问题,但还是不行,无法弄清楚。

$("input")
.focus(function() {
$(this).attr("placeholder", "enter your email address...");
$(".material-icons").show();
})
.blur(function() {
$(".material-icons").hide();
$(this).attr("placeholder", "input here");
$(".clear-input").click(function() {
$(this).prev().val("").focus();
});
});
html {
box-sizing: border-box;
}

form {
margin: 20vh;
}

.container {
border: none;
width: 248px;
position: relative;
}

input {
border: 1px solid pink;
box-shadow: none;
padding: 8px 100px 8px 5px;
position: relative;
}

input:hover {
border: 1px solid #222;
}

input:focus {
border: 1px solid blue;
}

.material-icons {
position: absolute;
right: 0px;
top: 0px;
margin: auto;
font-size: 3px;
cursor: pointer;
color: #aaa;
padding: 8px;
display: none;
}
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<form>
<div class="container">
<input class="type-here" type="text" placeholder="input here" />
<i class="clear-input material-icons">clear</i>
</div>
</form>

最佳答案

只需将 click 更改为 mousedown,因为 blur 比 click 事件更早触发并删除 click 事件并将 click 事件放在 focus 事件中。

$(document).ready(function(){
$(".material-icons").hide();
$("input")
.focus(function() {
$(this).attr("placeholder", "enter your email address...");
$(".material-icons").show();
$(".clear-input").mousedown(function(e) {
e.preventDefault();
$(this).prev().val("");
});
})
.blur(function() {
$(".material-icons").hide();
$(this).attr("placeholder", "input here");
});
});
html {
box-sizing: border-box;
}

form {
margin: 20vh;
}

.container {
border: none;
width: 248px;
position: relative;
}

input {
border: 1px solid pink;
box-shadow: none;
padding: 8px 100px 8px 5px;
position: relative;
}

input:hover {
border: 1px solid #222;
}

input:focus {
border: 1px solid blue;
}

.material-icons {
position: absolute;
right: 0px;
top: 0px;
margin: auto;
font-size: 3px;
cursor: pointer;
color: #aaa;
padding: 8px;
}
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<form>
<div class="container">
<input class="type-here" type="text" placeholder="input here" />
<i class="clear-input material-icons">clear</i>
</div>
</form>

关于javascript - 在输入字段内显示/隐藏清除图标无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51445960/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com