js实现自动补全及手风琴效果


<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">

<title>My JSP 'baidu.jsp' starting page</title>

<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
<style type="text/css">
* {
padding: 0;
margin: 0;
}

a {
text-decoration: none;
}

ul,li {
list-style: none;
}

body {
font-size: 14px;
font-family: "微软雅黑"
}

/*设置背景*/
.bg {
/* background:
url("http://imgstore.cdn.sogou.com/app/a/100540002/714894.jpg")
no-repeat; */
background: url("image/bg.jpg") no-repeat;
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-size: cover;
z-index: -1;
}

#container {
width: 640px;
height: 70px;
margin: 260px auto;
}

.inputs {
width: 560px;
height: 45px;
border: none;
float: left;
text-indent: 1em;
font-family: "微软雅黑";
box-shadow: inset 0 0 1em #ccc
}

.searchBtn {
height: 45px;
background: #fff;
display: inline-block;
float: left;
width: 77px;
text-align: center;
line-height: 45px;
border-left: 1px solid #ccc;
font-size: 16px;
}

.searchBox {
border: 1px solid #ccc;
height: 45px;
}

#autoBox {
display: none;
}

#autoBox li {
height: 35px;
border-bottom: 1px solid #ccc;
line-height: 35px;
padding-left: 10px;
font-size: 12px;
}

#autoBox li:HOVER {
background: #eaeaea;
}

.itemBox {
width: 300px;
background: #fff;
position: absolute;
height: 100%;
top: 0;
left: 0;
}

.itemBox li {
overflow: hidden;
}

.items {
height: 32px;
border-bottom: 1px solid #ccc;
line-height: 32px;
transition: all 1s ease;
padding-left: 20px;
position: relative;
padding-left: 20px;
position: relative;
}

.showpan {
position: absolute;
top: 0;
left: 260px;
width: 100%;
height: 100%;
background: red;
}
</style>
<script type="text/javascript" src="js/jquery-1.11.3.js"></script>
<script type="text/javascript">
$(function() {
$(".items").append("<div class='showpan'></div>");
$(".items").hover(function() {
$(this).find(".showpan").css("background", randomColor()).stop(true, true).animate({
left : 0
});
}, function() {
$(this).find(".showpan").css("background", randomColor()).stop(true, true).animate({
left : 260
});
});
function randomColor() {
var r = Math.floor(Math.random() * 256);
var g = Math.floor(Math.random() * 256);
var b = Math.floor(Math.random() * 256);
return "rgb(" + r + "," + g + "," + b + ")";
}
});
window.onload = function() {
//实现jquery中的css方法
var keyBoxDOM = function(id) {
var dom = document.getElementById(id);
return {
css : function(opts) {
for ( var key in opts) {
var v = opts[key];
if (typeof v == "number") {
v += "px";
}
dom["style"][key] = v;
}
}
}
}
window.keyBoxDOM = keyBoxDOM;
//获取input输入框
var keybox = document.getElementById("keyBox");
//获取自动提示框
var autobox = document.getElementById("autoBox");
//获取下拉框
var ulbox = document.getElementById("ulBox");
//获取按钮ID
var btnChang = document.getElementById("btnChang");
var index = -1;
//var index = 0;
//重新绑定事件
keybox.onkeyup = autoComplete;
keybox.onkeydown = autoComplete;
function autoComplete() {
//拿到input 的宽度和高度
var inw = this.offsetWidth;
var inh = this.offsetHeight;
//输入框值
var value = this.value;
//验证
var check = value.match(/@/ig);
if (check && check.length > 1) {
this.value = value.substring(0, value.length - 1);
return;
}
if (value.indexOf("@") != -1) {
keyBoxDOM("autoBox").css({
display : "block",
width : inw,
height : "215",
marginTop : 45,
background : "#f9f9f9"
})
//拼接数据
var html = getMailHTML(value);
ulbox.innerHTML = html;
//动态绑定事件
var lis = ulbox.children;
for (var i = 0; i < lis.length; i++) {
lis[i].onclick = function() {
keybox.value = this.innerHTML;
keybox.onkeyup = autoComplete;
keybox.onkeydown = autoComplete;
}
}
}
}
//通过键盘控制
document.onkeyup = function(e) {
//键码38 40
var ev = e || window.event;
var code = ev.keyCode || ev.which;
//获取所有的li
var lis = ulbox.children;
/* if (code == 40) {//向下
keybox.onkeyup = null;
keybox.onkeydown = null;
if (index == lis.length) {
index = 0;
}
for (var i = 0; i < lis.length; i++) {
lis[i].style.background = "none";
}
lis[index].style.background = "#ccc";
keybox.value = lis[index].innerHTML;
index++;

}
if (code == 38) {//向上

} */
if (code == 40) {//向下
keybox.onkeyup = null;
keybox.onkeydown = null;
if (index == lis.length - 1) {
index = 0;
} else {
index++;
if (index > lis.length - 1) {
index = 0;
}
}
if (index != -1) {
for (var i = 0; i < lis.length; i++) {
lis[i].style.background = "none";
}
lis[index].style.background = "#ccc";
keybox.value = lis[index].innerHTML;
}
}
if (code == 38) {//向上
if (index == -1) {
index = lis.length - 1;
} else {
index--;
if (index < 0) {
index = lis.length - 1;
}
}
if (index != -1) {
for (var i = 0; i < lis.length; i++) {
lis[i].style.background = "none";
}
lis[index].style.background = "#ccc";
keybox.value = lis[index].innerHTML;
}
}
if (code == 13) {//回车键
autobox.style.display = "none";
}
}
function getMailHTML(value) {
var arr = [ "163.com", "126.com", "qq.com", "gmail.com", "sohu.com", "sina.com" ];
var html = "";
for (var i = 0; i < arr.length; i++) {
//html += "<li onclick='selectMe(this);'>" + value + arr[i] + "</li>";
html += "[*]" + value + arr[i] + "
";
}
return html;
}
//静态绑定
function selectMe(obj) {
document.getElementById("keybox") = obj.innerHTML;
}
autobox.onmouseleave = function() {
this.style.display = "none";
}
btnChang.onmouseover = function() {
this.style.background = "#eaeaea";
}
btnChang.onmouseleave = function() {
this.style.background = "#f9f9f9";
}
}
</script>
</head>

<body>
<!-- 设置背景 -->
<div class="bg"></div>
<div id="container">
<div class="searchBox" style="">
<input type="text" class="inputs" id="keyBox" placeholder="请输入邮箱" />[url=" class=]搜索[/url]
<div id="autoBox">
<ul id="ulBox">
</ul>
</div>
</div>
</div>
<div>
<ul class="itemBox">
<li class="items">0</li>
<li class="items">1</li>
<li class="items">2</li>
<li class="items">3</li>
<li class="items">4</li>
<li class="items">5</li>
<li class="items">6</li>
<li class="items">7</li>
<li class="items">8</li>
<li class="items">9</li>
<li class="items">0</li>
<li class="items">1</li>
<li class="items">2</li>
<li class="items">3</li>
<li class="items">4</li>
<li class="items">5</li>
<li class="items">6</li>
<li class="items">7</li>
<li class="items">8</li>
<li class="items">9</li>
<li class="items">0</li>
<li class="items">1</li>
<li class="items">2</li>
</ul>
</div>
</body>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值