本文介绍如何使用JavaScript实现输入框内容的放大提示功能。通过监听keyup、focus和blur事件,动态控制提示框的显示与隐藏。当输入内容非空时,将内容同步至放大显示的提示框;失去焦点或内容为空时自动隐藏。重点区分keydown与keyup事件在内容获取时机上的差异,确保提示内容准确同步。
输入框内容放大提示功能实现
在网页开发中,有时会遇到输入框尺寸较小的情况。为了提升用户体验,希望在用户输入内容后,能够弹出一个放大的提示框来展示输入的具体内容。
实现思路
- 首先,在页面中预先编写好提示框的结构。接着,通过CSS将提示框的display属性设置为none,使其初始状态处于隐藏状态。
- 其次,通过JavaScript获取输入框的元素对象以及信息提示框的元素对象,以便后续进行DOM操作。
- 然后,为输入框元素对象绑定键盘松开事件(keyup)。
- 在事件处理程序中,判断输入框的内容是否为空。如果内容不为空,则将输入框的内容赋值给信息提示框,并将提示框的display属性设置为block,使其显示出来;如果内容为空,则设置提示框不显示。
- 此外,还需要添加获取焦点(focus)和失去焦点(blur)的事件处理。
- 当输入框失去焦点(blur)时,即鼠标不再选中输入框且输入框中无光标闪烁时,设置信息提示框不显示,即将其display属性设置为none。
- 当输入框获取焦点(focus)时,即鼠标点击输入框且输入框中有光标闪烁时,需要判断输入框是否有内容。如果有内容,则显示信息提示框。
需要注意的是,这里必须使用键盘松开事件(keyup),而不应使用键盘按下事件(keydown或keypress)。因为在按下按键时,输入的字符尚未被录入到输入框中,只有在键盘松开时,输入的字符才会被正确录入。
代码示例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>模拟京东快递单号查询</title>
<style>
* {
margin: 0;
padding: 0;
}
input {
outline-style: none;
}
.search {
position: relative;
width: 220px;
margin: 100px auto;
}
.info {
display: none;
position: absolute;
top: -40px;
left: 0;
width: 170px;
padding: 5px 0;
font-size: 18px;
line-height: 20px;
border: 1px solid rgba(0, 0, 0, .2);
box-shadow: 0px 2px 4px rgba(0, 0, 0, .2);
}
.info::before {
content: '';
width: 0;
height: 0;
position: absolute;
top: 28px;
left: 18px;
border: 8px solid #000;
border-color: #fff transparent transparent;
border-style: solid dashed dashed;
}
</style>
</head>
<body>
<div class="search">
<div class="info">(*´▽`)ノノ</div>
<input type="text" class="express" placeholder="请输入要查询的快递单号">
<input type="button" value="查询">
</div>
<script>
var expressNo = document.querySelector('.express');
var info = document.querySelector('.info');
expressNo.addEventListener('keyup', function() {
console.log(expressNo.value);
console.log(info.innerHTML);
if (this.value == '') {
info.style.display = 'none';
} else {
info.style.display = 'block';
info.innerHTML = this.value;
}
});
// 失去焦点,隐藏盒子
expressNo.addEventListener('blur', function() {
info.style.display = 'none';
})
//获得焦点事件,显示盒子
expressNo.addEventListener('focus', function() {
if (this.value !== '') {
info.style.display = 'block';
}
})
</script>
</body>
</html>
页面效果:

到此这篇关于javascript实现输入框内容提示及隐藏功能的文章就介绍到这了,更多相关js输入框内容提示及隐藏内容请搜索本站以前的文章或继续浏览下面的相关文章希望大家以后多多支持本站!