master
parent
7c3f9e6ee1
commit
c00eb73eb8
11 changed files with 1783 additions and 1 deletions
@ -0,0 +1,251 @@ |
||||
html,body{ |
||||
width: 100%; |
||||
font-family: "微软雅黑"; |
||||
font-size: 1em; |
||||
background: #1f2126; |
||||
color: #c2b483; |
||||
margin: 0; |
||||
padding: 0; |
||||
} |
||||
img{ |
||||
width: 100%; |
||||
margin: 0; |
||||
padding: 0; |
||||
} |
||||
|
||||
/*index.html*/ |
||||
.main_div{ |
||||
width: 100%; |
||||
} |
||||
.top_div{ |
||||
width: 100%; |
||||
background: #050c1e; |
||||
border-top: 1px solid #050C1E; |
||||
border-bottom: 1px solid #050C1E; |
||||
border-image: url(../img/line.png) 1 1 1 1; |
||||
overflow: hidden; |
||||
} |
||||
.logo{ |
||||
width: 40%; |
||||
margin: 10px auto; |
||||
} |
||||
.top_text{ |
||||
font-size: 1.2em; |
||||
text-align: center; |
||||
font-weight: 400; |
||||
margin-bottom: 15px; |
||||
} |
||||
.bottom_div{ |
||||
width: 100%; |
||||
} |
||||
.bottom_text{ |
||||
text-align: center; |
||||
font-size: 1em; |
||||
margin-top: 15px; |
||||
} |
||||
.park_action{ |
||||
width: 100%; |
||||
margin-top: 30px; |
||||
overflow: hidden; |
||||
} |
||||
.add_park{ |
||||
width: 42.5%; |
||||
margin-left: 5%; |
||||
line-height: 40px; |
||||
font-size: 1.3em; |
||||
color: #C2B483; |
||||
text-align: center; |
||||
float: left; |
||||
border: 1px solid #C2B483; |
||||
border-radius: 5px; |
||||
} |
||||
.del_park{ |
||||
width: 42.5%; |
||||
margin-right: 5%; |
||||
line-height: 40px; |
||||
font-size: 1.3em; |
||||
color: #C2B483; |
||||
text-align: center; |
||||
float: right; |
||||
border: 1px solid #C2B483; |
||||
border-radius: 5px; |
||||
} |
||||
.car_list{ |
||||
width: 100%; |
||||
overflow: hidden; |
||||
} |
||||
.car_name:nth-child(odd){ |
||||
width: 42.5%; |
||||
margin-left: 5%; |
||||
margin-top: 20px; |
||||
line-height: 40px; |
||||
font-size: 1.3em; |
||||
text-align: center; |
||||
float: left; |
||||
border: 1px solid #C2B483; |
||||
border-radius: 5px; |
||||
} |
||||
.car_name:nth-child(even){ |
||||
width: 42.5%; |
||||
margin-right: 5%; |
||||
margin-top: 20px; |
||||
line-height: 40px; |
||||
font-size: 1.3em; |
||||
text-align: center; |
||||
float: right; |
||||
border: 1px solid #C2B483; |
||||
border-radius: 5px; |
||||
} |
||||
.park_record{ |
||||
width: 90%; |
||||
margin: 20px auto; |
||||
background: #C2B483; |
||||
font-size: 1.2em; |
||||
text-align: center; |
||||
line-height: 40px; |
||||
color: #1F2126; |
||||
border-radius: 5px; |
||||
} |
||||
/*add_park.html*/ |
||||
.car_input{ |
||||
width: 90%; |
||||
margin: 0 auto; |
||||
margin-top: 30px; |
||||
background: #050C1E; |
||||
border: 1px solid #C2B483; |
||||
border-radius: 5px; |
||||
} |
||||
.car_input input{ |
||||
width: 100%; |
||||
line-height: 40px; |
||||
border: none; |
||||
border-radius: 5px; |
||||
text-align: center; |
||||
font-size: 1.2em; |
||||
color: #C2B483; |
||||
background: #050C1E; |
||||
-webkit-appearance: none; |
||||
} |
||||
.next_step{ |
||||
width: 90%; |
||||
margin: 40px auto; |
||||
background: #C2B483; |
||||
font-size: 1.2em; |
||||
text-align: center; |
||||
line-height: 40px; |
||||
color: #1F2126; |
||||
border-radius: 5px; |
||||
} |
||||
#word{ |
||||
background: #1F2126; |
||||
} |
||||
option{ |
||||
background: #1F2126; |
||||
} |
||||
/*del_park.html*/ |
||||
.del_text{ |
||||
text-align: center; |
||||
font-size: 1em; |
||||
margin-top: 15px; |
||||
margin-bottom: 30px; |
||||
} |
||||
/*pay_park.html*/ |
||||
.pay_main_div{ |
||||
width: 100%; |
||||
} |
||||
.top_car_name{ |
||||
width: 95%; |
||||
background: #050C1E; |
||||
line-height: 60px; |
||||
padding-left: 5%; |
||||
} |
||||
.pay_car_name{ |
||||
font-size: 1.1em; |
||||
} |
||||
.count_pay,.discount,.select_time{ |
||||
width:100%; |
||||
line-height: 30px; |
||||
background: #1f2126; |
||||
} |
||||
.need_pay,.park_time{ |
||||
width:100%; |
||||
line-height: 30px; |
||||
background: #050C1E; |
||||
} |
||||
.info_title{ |
||||
width: 40%; |
||||
line-height: 35px; |
||||
padding-left: 5%; |
||||
float: left; |
||||
} |
||||
.info_text{ |
||||
width: 50%; |
||||
line-height: 35px; |
||||
padding-right: 5%; |
||||
text-align: right; |
||||
float: right; |
||||
} |
||||
.pay_submit{ |
||||
width: 90%; |
||||
margin: 80px auto; |
||||
line-height: 40px; |
||||
text-align: center; |
||||
background: #C2B483; |
||||
color: #1F2126; |
||||
border: 1px solid #C2B483; |
||||
border-radius: 5px; |
||||
} |
||||
/*park_record.html*/ |
||||
.record_list{ |
||||
width: 100%; |
||||
margin-top: 20px; |
||||
} |
||||
.record_info{ |
||||
width: 94%; |
||||
margin: 0 auto; |
||||
border: 1px solid #C2B483; |
||||
border-radius: 5px; |
||||
overflow: hidden; |
||||
} |
||||
.record_title{ |
||||
width: 100%; |
||||
background: #C2B483; |
||||
color: #1F2126; |
||||
line-height: 40px; |
||||
overflow: hidden; |
||||
} |
||||
.record_car_name{ |
||||
width: 45%; |
||||
margin-left: 5%; |
||||
float: left; |
||||
} |
||||
.record_date{ |
||||
width: 45%; |
||||
text-align: right; |
||||
float: left; |
||||
} |
||||
.record_detail{ |
||||
width: 100%; |
||||
} |
||||
.detail_li{ |
||||
width: 95%; |
||||
padding-left: 5%; |
||||
line-height: 30px; |
||||
} |
||||
.last_pay{ |
||||
font-weight: bold; |
||||
} |
||||
.pay_record_action{ |
||||
width: 100%; |
||||
margin-top: 30px; |
||||
} |
||||
.before_page,.next_page{ |
||||
width: 42.5%; |
||||
float: left; |
||||
text-align: center; |
||||
line-height: 40px; |
||||
background: #C2B483; |
||||
color: #1F2126; |
||||
margin-left: 5%; |
||||
border-radius: 5px; |
||||
} |
@ -0,0 +1,50 @@ |
||||
.ac_results { |
||||
width: 80%; |
||||
padding: 0px; |
||||
border: 1px solid #c2b483; |
||||
background-color: #1F2126; |
||||
overflow: hidden; |
||||
z-index: 99999; |
||||
} |
||||
|
||||
.ac_results ul { |
||||
width: 100%; |
||||
list-style-position: outside; |
||||
list-style: none; |
||||
padding: 0; |
||||
margin: 0; |
||||
} |
||||
|
||||
.ac_results li |
||||
{ |
||||
margin: 0px; |
||||
padding: 5px 8px; |
||||
cursor: default; |
||||
display: block; |
||||
/* |
||||
if width will be 100% horizontal scrollbar will apear |
||||
when scroll mode will be used |
||||
*/ |
||||
/*width: 100%;*/ |
||||
font: menu; |
||||
font-size: 1em; |
||||
/* |
||||
it is very important, if line-height not setted or setted |
||||
in relative units scroll will be broken in firefox |
||||
*/ |
||||
line-height: 25px; |
||||
overflow: hidden; |
||||
} |
||||
|
||||
.ac_loading { |
||||
background: white url('indicator.gif') right center no-repeat; |
||||
} |
||||
|
||||
.ac_odd { |
||||
background-color: #1F2126; |
||||
} |
||||
|
||||
.ac_over { |
||||
background-color: #050C1E; |
||||
color: #c2b483; |
||||
} |
@ -0,0 +1,357 @@ |
||||
.layui-m-layer { |
||||
position: relative; |
||||
z-index: 19891014 |
||||
} |
||||
|
||||
.layui-m-layer * { |
||||
-webkit-box-sizing: content-box; |
||||
-moz-box-sizing: content-box; |
||||
box-sizing: content-box |
||||
} |
||||
|
||||
.layui-m-layermain, |
||||
.layui-m-layershade { |
||||
position: fixed; |
||||
left: 0; |
||||
top: 0; |
||||
width: 100%; |
||||
height: 100% |
||||
} |
||||
|
||||
.layui-m-layershade { |
||||
background-color: rgba(0, 0, 0, .7); |
||||
pointer-events: auto |
||||
} |
||||
|
||||
.layui-m-layermain { |
||||
display: table; |
||||
font-family: "microsoft yahei", Helvetica, arial, sans-serif; |
||||
pointer-events: none |
||||
} |
||||
|
||||
.layui-m-layermain .layui-m-layersection { |
||||
display: table-cell; |
||||
vertical-align: middle; |
||||
text-align: center |
||||
} |
||||
|
||||
.layui-m-layerchild { |
||||
position: relative; |
||||
display: inline-block; |
||||
text-align: left; |
||||
background-color: #fff; |
||||
font-size: 14px; |
||||
border-radius: 5px; |
||||
box-shadow: 0 0 8px rgba(0, 0, 0, .1); |
||||
pointer-events: auto; |
||||
-webkit-overflow-scrolling: touch; |
||||
-webkit-animation-fill-mode: both; |
||||
animation-fill-mode: both; |
||||
-webkit-animation-duration: .2s; |
||||
animation-duration: .2s |
||||
} |
||||
|
||||
@-webkit-keyframes layui-m-anim-scale { |
||||
0% { |
||||
opacity: 0; |
||||
-webkit-transform: scale(.5); |
||||
transform: scale(.5) |
||||
} |
||||
100% { |
||||
opacity: 1; |
||||
-webkit-transform: scale(1); |
||||
transform: scale(1) |
||||
} |
||||
} |
||||
|
||||
@keyframes layui-m-anim-scale { |
||||
0% { |
||||
opacity: 0; |
||||
-webkit-transform: scale(.5); |
||||
transform: scale(.5) |
||||
} |
||||
100% { |
||||
opacity: 1; |
||||
-webkit-transform: scale(1); |
||||
transform: scale(1) |
||||
} |
||||
} |
||||
|
||||
.layui-m-anim-scale { |
||||
animation-name: layui-m-anim-scale; |
||||
-webkit-animation-name: layui-m-anim-scale |
||||
} |
||||
|
||||
@-webkit-keyframes layui-m-anim-up { |
||||
0% { |
||||
opacity: 0; |
||||
-webkit-transform: translateY(800px); |
||||
transform: translateY(800px) |
||||
} |
||||
100% { |
||||
opacity: 1; |
||||
-webkit-transform: translateY(0); |
||||
transform: translateY(0) |
||||
} |
||||
} |
||||
|
||||
@keyframes layui-m-anim-up { |
||||
0% { |
||||
opacity: 0; |
||||
-webkit-transform: translateY(800px); |
||||
transform: translateY(800px) |
||||
} |
||||
100% { |
||||
opacity: 1; |
||||
-webkit-transform: translateY(0); |
||||
transform: translateY(0) |
||||
} |
||||
} |
||||
|
||||
.layui-m-anim-up { |
||||
-webkit-animation-name: layui-m-anim-up; |
||||
animation-name: layui-m-anim-up |
||||
} |
||||
|
||||
.layui-m-layer0 .layui-m-layerchild { |
||||
width: 90%; |
||||
max-width: 640px |
||||
} |
||||
|
||||
.layui-m-layer1 .layui-m-layerchild { |
||||
border: none; |
||||
border-radius: 0 |
||||
} |
||||
|
||||
.layui-m-layer2 .layui-m-layerchild { |
||||
width: auto; |
||||
max-width: 260px; |
||||
min-width: 40px; |
||||
border: none; |
||||
background: 0 0; |
||||
box-shadow: none; |
||||
color: #fff |
||||
} |
||||
|
||||
.layui-m-layerchild h3 { |
||||
padding: 0 10px; |
||||
height: 60px; |
||||
line-height: 60px; |
||||
font-size: 16px; |
||||
font-weight: 400; |
||||
border-radius: 5px 5px 0 0; |
||||
text-align: center |
||||
} |
||||
|
||||
.layui-m-layerbtn span, |
||||
.layui-m-layerchild h3 { |
||||
text-overflow: ellipsis; |
||||
overflow: hidden; |
||||
white-space: nowrap |
||||
} |
||||
|
||||
.layui-m-layercont { |
||||
padding: 50px 30px; |
||||
line-height: 22px; |
||||
text-align: center |
||||
} |
||||
|
||||
.layui-m-layer1 .layui-m-layercont { |
||||
padding: 0; |
||||
text-align: left |
||||
} |
||||
|
||||
.layui-m-layer2 .layui-m-layercont { |
||||
text-align: center; |
||||
padding: 0; |
||||
line-height: 0 |
||||
} |
||||
|
||||
.layui-m-layer2 .layui-m-layercont i { |
||||
width: 25px; |
||||
height: 25px; |
||||
margin-left: 8px; |
||||
display: inline-block; |
||||
background-color: #fff; |
||||
border-radius: 100%; |
||||
-webkit-animation: layui-m-anim-loading 1.4s infinite ease-in-out; |
||||
animation: layui-m-anim-loading 1.4s infinite ease-in-out; |
||||
-webkit-animation-fill-mode: both; |
||||
animation-fill-mode: both |
||||
} |
||||
|
||||
.layui-m-layerbtn, |
||||
.layui-m-layerbtn span { |
||||
position: relative; |
||||
text-align: center; |
||||
border-radius: 0 0 5px 5px |
||||
} |
||||
|
||||
.layui-m-layer2 .layui-m-layercont p { |
||||
margin-top: 20px |
||||
} |
||||
|
||||
@-webkit-keyframes layui-m-anim-loading { |
||||
0%, |
||||
100%, |
||||
80% { |
||||
transform: scale(0); |
||||
-webkit-transform: scale(0) |
||||
} |
||||
40% { |
||||
transform: scale(1); |
||||
-webkit-transform: scale(1) |
||||
} |
||||
} |
||||
|
||||
@keyframes layui-m-anim-loading { |
||||
0%, |
||||
100%, |
||||
80% { |
||||
transform: scale(0); |
||||
-webkit-transform: scale(0) |
||||
} |
||||
40% { |
||||
transform: scale(1); |
||||
-webkit-transform: scale(1) |
||||
} |
||||
} |
||||
|
||||
.layui-m-layer2 .layui-m-layercont i:first-child { |
||||
margin-left: 0; |
||||
-webkit-animation-delay: -.32s; |
||||
animation-delay: -.32s |
||||
} |
||||
|
||||
.layui-m-layer2 .layui-m-layercont i.layui-m-layerload { |
||||
-webkit-animation-delay: -.16s; |
||||
animation-delay: -.16s |
||||
} |
||||
|
||||
.layui-m-layer2 .layui-m-layercont>div { |
||||
line-height: 22px; |
||||
padding-top: 7px; |
||||
margin-bottom: 20px; |
||||
font-size: 14px |
||||
} |
||||
|
||||
.layui-m-layerbtn { |
||||
display: box; |
||||
display: -moz-box; |
||||
display: -webkit-box; |
||||
width: 100%; |
||||
height: 50px; |
||||
line-height: 50px; |
||||
font-size: 0; |
||||
border-top: 1px solid #D0D0D0; |
||||
background-color: #F2F2F2 |
||||
} |
||||
|
||||
.layui-m-layerbtn span { |
||||
display: block; |
||||
-moz-box-flex: 1; |
||||
box-flex: 1; |
||||
-webkit-box-flex: 1; |
||||
font-size: 14px; |
||||
cursor: pointer |
||||
} |
||||
|
||||
.layui-m-layerbtn span[yes] { |
||||
color: #fd482c |
||||
} |
||||
|
||||
.layui-m-layerbtn span[no] { |
||||
border-right: 1px solid #1F2126; |
||||
border-radius: 0 0 0 5px |
||||
} |
||||
|
||||
.layui-m-layerbtn span:active { |
||||
background-color: #F6F6F6 |
||||
} |
||||
|
||||
.layui-m-layerend { |
||||
position: absolute; |
||||
right: 7px; |
||||
top: 10px; |
||||
width: 30px; |
||||
height: 30px; |
||||
border: 0; |
||||
font-weight: 400; |
||||
background: 0 0; |
||||
cursor: pointer; |
||||
-webkit-appearance: none; |
||||
font-size: 30px |
||||
} |
||||
|
||||
.layui-m-layerend::after, |
||||
.layui-m-layerend::before { |
||||
position: absolute; |
||||
left: 5px; |
||||
top: 15px; |
||||
content: ''; |
||||
width: 18px; |
||||
height: 1px; |
||||
background-color: #999; |
||||
transform: rotate(45deg); |
||||
-webkit-transform: rotate(45deg); |
||||
border-radius: 3px |
||||
} |
||||
|
||||
.layui-m-layerend::after { |
||||
transform: rotate(-45deg); |
||||
-webkit-transform: rotate(-45deg) |
||||
} |
||||
|
||||
body .layui-m-layer .layui-m-layer-footer { |
||||
position: fixed; |
||||
width: 95%; |
||||
max-width: 100%; |
||||
margin: 0 auto; |
||||
left: 0; |
||||
right: 0; |
||||
bottom: 10px; |
||||
background: 0 0 |
||||
} |
||||
|
||||
.layui-m-layer-footer .layui-m-layercont { |
||||
font-size: 1.1em; |
||||
padding: 15px; |
||||
border-radius: 5px 5px 0 0; |
||||
background-color: #c2b483; |
||||
color: #1F2126; |
||||
} |
||||
|
||||
.layui-m-layer-footer .layui-m-layerbtn { |
||||
display: block; |
||||
height: auto; |
||||
background: 0 0; |
||||
border-top: none |
||||
} |
||||
|
||||
.layui-m-layer-footer .layui-m-layerbtn span { |
||||
background-color: #1F2126 |
||||
} |
||||
|
||||
.layui-m-layer-footer .layui-m-layerbtn span[no] { |
||||
color: #40AFFE; |
||||
border-top: 1px solid #1F2126; |
||||
border-radius: 0 0 5px 5px |
||||
} |
||||
|
||||
.layui-m-layer-footer .layui-m-layerbtn span[yes] { |
||||
margin-top: 10px; |
||||
border-radius: 5px |
||||
} |
||||
|
||||
body .layui-m-layer .layui-m-layer-msg { |
||||
width: auto; |
||||
max-width: 90%; |
||||
margin: 0 auto; |
||||
bottom: -150px; |
||||
background-color: rgba(0, 0, 0, .7); |
||||
color: #c2b483 |
||||
} |
||||
|
||||
.layui-m-layer-msg .layui-m-layercont { |
||||
padding: 10px 20px |
||||
} |
@ -0,0 +1,65 @@ |
||||
<!DOCTYPE html> |
||||
<html> |
||||
<head> |
||||
<meta charset="UTF-8"> |
||||
<title>Ushio短链生成器</title> |
||||
<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" /> |
||||
<link rel="stylesheet" type="text/css" href="css/index.css"/> |
||||
<link rel="stylesheet" type="text/css" href="css/layer.css"/> |
||||
<link rel="stylesheet" type="text/css" href="css/jquery.css"/> |
||||
<script type="text/javascript">block_aplayer = true;</script> |
||||
<script src="https://cdn.yimian.xyz/ushio-js/ushio-head.min.js"></script> |
||||
</head> |
||||
<body> |
||||
|
||||
<div class="main_div"> |
||||
<br><br><br><br><br><br><br><br> |
||||
<div class="bottom_div"> |
||||
<div class="bottom_text"> |
||||
请输入需要缩短的链接: |
||||
</div> |
||||
<div class="car_input"> |
||||
<input type="text" name="url" id="url" placeholder="输入链接" /> |
||||
</div> |
||||
<div class="next_step"> |
||||
生成 |
||||
</div> |
||||
<div class="car_input"> |
||||
<input type="text" id="res"/> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
|
||||
|
||||
<script type="text/javascript" src="js/jquery.min.js"></script> |
||||
|
||||
<script type="text/javascript"> |
||||
|
||||
|
||||
function getURL(url, fun) { |
||||
var strReg = /http(s)?:\/\/([\w-]+\.)+[\w-]+(\/[\w- .\/?%&=]*)?/; |
||||
var re = new RegExp(strReg); |
||||
if(!re.test(url)) { |
||||
fun(false); |
||||
} else { |
||||
fun(true); |
||||
} |
||||
} |
||||
|
||||
$('#res').hide(); |
||||
|
||||
$('.next_step').click(function(){ |
||||
getURL($('#url').val(), function(flag){ |
||||
if(flag){ |
||||
alert('good'); |
||||
}else{ |
||||
alert('请输入有效的链接!!') |
||||
} |
||||
}) |
||||
|
||||
}) |
||||
|
||||
</script> |
||||
<script src="https://cdn.yimian.xyz/ushio-js/ushio-footer.min.js"></script> |
||||
</body> |
||||
</html> |
@ -0,0 +1,60 @@ |
||||
var data=[{name:"JA",value:"京A"},{name:"JB",value:"京B"},{name:"JC",value:"京C"},{name:"JE",value:"京E"},{name:"JF",value:"京F"},{name:"JH",value:"京H"},{name:"JJ",value:"京J"}, |
||||
{name:"JK",value:"京K"},{name:"JL",value:"京L"},{name:"JM",value:"京M"},{name:"JN",value:"京N"},{name:"JP",value:"京P"},{name:"JG",value:"京G"},{name:"JY",value:"京Y"}, |
||||
{name:"JP",value:"京P"},{name:"JO",value:"京O"},{name:"JD",value:"京D"},{name:"JA",value:"津A"},{name:"JB",value:"津B"},{name:"JC",value:"津C"},{name:"JD",value:"津D"}, |
||||
{name:"JE",value:"津E"},{name:"JF",value:"津F"},{name:"JG",value:"津G"},{name:"JH",value:"津H"},{name:"JJ",value:"津J"},{name:"JK",value:"津K"},{name:"JL",value:"津L"}, |
||||
{name:"JM",value:"津M"},{name:"JN",value:"津N"},{name:"JP",value:"津P"},{name:"JQ",value:"津Q"},{name:"HA",value:"沪A"},{name:"HB",value:"沪B"},{name:"HD",value:"沪D"}, |
||||
{name:"HE",value:"沪E"},{name:"HF",value:"沪F"},{name:"HG",value:"沪G"},{name:"HH",value:"沪H"},{name:"HJ",value:"沪J"},{name:"HK",value:"沪K"},{name:"HL",value:"沪L"}, |
||||
{name:"HM",value:"沪M"},{name:"HN",value:"沪N"},{name:"HC",value:"沪C"},{name:"HAX",value:"沪AX"},{name:"HBX",value:"沪BX"},{name:"HDX",value:"沪DX"},{name:"YA",value:"渝A"}, |
||||
{name:"YB",value:"渝B"},{name:"YC",value:"渝C"},{name:"YF",value:"渝F"},{name:"YG",value:"渝G"},{name:"YH",value:"渝H"},{name:"JA",value:"冀A"},{name:"JB",value:"冀B"}, |
||||
{name:"JC",value:"冀C"},{name:"JD",value:"冀D"},{name:"JE",value:"冀E"},{name:"JF",value:"冀F"},{name:"JG",value:"冀G"},{name:"JH",value:"冀H"},{name:"JJ",value:"冀J"}, |
||||
{name:"JR",value:"冀R"},{name:"JT",value:"冀T"},{name:"YA",value:"豫A"},{name:"YB",value:"豫B"},{name:"YC",value:"豫C"},{name:"YD",value:"豫D"},{name:"YE",value:"豫E"}, |
||||
{name:"YF",value:"豫F"},{name:"YG",value:"豫G"},{name:"YH",value:"豫H"},{name:"YJ",value:"豫J"},{name:"YK",value:"豫K"},{name:"YL",value:"豫L"},{name:"YM",value:"豫M"}, |
||||
{name:"YN",value:"豫N"},{name:"YP",value:"豫P"},{name:"YQ",value:"豫Q"},{name:"YR",value:"豫R"},{name:"YS",value:"豫S"},{name:"YU",value:"豫U"},{name:"YA",value:"云A"}, |
||||
{name:"YC",value:"云C"},{name:"YD",value:"云D"},{name:"YE",value:"云E"},{name:"YF",value:"云F"},{name:"YG",value:"云G"},{name:"YH",value:"云H"},{name:"YJ",value:"云J"}, |
||||
{name:"YL",value:"云L"},{name:"YK",value:"云K"},{name:"YM",value:"云M"},{name:"YN",value:"云N"},{name:"YP",value:"云P"},{name:"YQ",value:"云Q"},{name:"YR",value:"云R"}, |
||||
{name:"YS",value:"云S"},{name:"LA",value:"辽A"},{name:"LB",value:"辽B"},{name:"LC",value:"辽C"},{name:"LD",value:"辽D"},{name:"LE",value:"辽E"},{name:"LF",value:"辽F"}, |
||||
{name:"LG",value:"辽G"},{name:"LH",value:"辽H"},{name:"LJ",value:"辽J"},{name:"LK",value:"辽K"},{name:"LL",value:"辽L"},{name:"LM",value:"辽M"},{name:"LN",value:"辽N"}, |
||||
{name:"LP",value:"辽P"},{name:"LO",value:"辽O"},{name:"HA",value:"黑A"},{name:"HB",value:"黑B"},{name:"HC",value:"黑C"},{name:"HD",value:"黑D"},{name:"HE",value:"黑E"}, |
||||
{name:"HF",value:"黑F"},{name:"HG",value:"黑G"},{name:"HH",value:"黑H"},{name:"HJ",value:"黑J"},{name:"HK",value:"黑K"},{name:"HL",value:"黑L"},{name:"HM",value:"黑M"}, |
||||
{name:"HN",value:"黑N"},{name:"HP",value:"黑P"},{name:"HR",value:"黑R"},{name:"XA",value:"湘A"},{name:"XB",value:"湘B"},{name:"XC",value:"湘C"},{name:"XD",value:"湘D"}, |
||||
{name:"XE",value:"湘E"},{name:"XF",value:"湘F"},{name:"XG",value:"湘G"},{name:"XH",value:"湘H"},{name:"XJ",value:"湘J"},{name:"XK",value:"湘K"},{name:"XL",value:"湘L"}, |
||||
{name:"XM",value:"湘M"},{name:"XN",value:"湘N"},{name:"XU",value:"湘U"},{name:"WA",value:"皖A"},{name:"WB",value:"皖B"},{name:"WC",value:"皖C"},{name:"WD",value:"皖D"}, |
||||
{name:"WE",value:"皖E"},{name:"WF",value:"皖F"},{name:"WG",value:"皖G"},{name:"WH",value:"皖H"},{name:"WJ",value:"皖J"},{name:"WK",value:"皖K"},{name:"WL",value:"皖L"}, |
||||
{name:"WM",value:"皖M"},{name:"WN",value:"皖N"},{name:"WP",value:"皖P"},{name:"WR",value:"皖R"},{name:"WS",value:"皖S"},{name:"LA",value:"鲁A"},{name:"LB",value:"鲁B"}, |
||||
{name:"LC",value:"鲁C"},{name:"LD",value:"鲁D"},{name:"LE",value:"鲁E"},{name:"LF",value:"鲁F"},{name:"LG",value:"鲁G"},{name:"LH",value:"鲁H"},{name:"LJ",value:"鲁J"}, |
||||
{name:"LK",value:"鲁K"},{name:"LL",value:"鲁L"},{name:"LM",value:"鲁M"},{name:"LN",value:"鲁N"},{name:"LP",value:"鲁P"},{name:"LQ",value:"鲁Q"},{name:"LR",value:"鲁R"}, |
||||
{name:"LS",value:"鲁S"},{name:"LU",value:"鲁U"},{name:"LV",value:"鲁V"},{name:"LW",value:"鲁W"},{name:"LY",value:"鲁Y"},{name:"SA",value:"苏A"},{name:"SB",value:"苏B"}, |
||||
{name:"SC",value:"苏C"},{name:"SD",value:"苏D"},{name:"SE",value:"苏E"},{name:"SF",value:"苏F"},{name:"SG",value:"苏G"},{name:"SH",value:"苏H"},{name:"SJ",value:"苏J"}, |
||||
{name:"SK",value:"苏K"},{name:"SL",value:"苏L"},{name:"SM",value:"苏M"},{name:"SN",value:"苏N"},{name:"GA",value:"赣A"},{name:"GB",value:"赣B"},{name:"GC",value:"赣C"}, |
||||
{name:"GD",value:"赣D"},{name:"GE",value:"赣E"},{name:"GF",value:"赣F"},{name:"GG",value:"赣G"},{name:"GH",value:"赣H"},{name:"GJ",value:"赣J"},{name:"GK",value:"赣K"}, |
||||
{name:"GL",value:"赣L"},{name:"GM",value:"赣M"},{name:"GO",value:"赣O"},{name:"GS",value:"赣S"},{name:"ZA",value:"浙A"},{name:"ZB",value:"浙B"},{name:"ZC",value:"浙C"}, |
||||
{name:"ZD",value:"浙D"},{name:"ZE",value:"浙E"},{name:"ZF",value:"浙F"},{name:"ZG",value:"浙G"},{name:"ZH",value:"浙H"},{name:"ZJ",value:"浙J"},{name:"ZK",value:"浙K"}, |
||||
{name:"ZL",value:"浙L"},{name:"YA",value:"粤A"},{name:"YB",value:"粤B"},{name:"YC",value:"粤C"},{name:"YD",value:"粤D"},{name:"YE",value:"粤E"},{name:"YF",value:"粤F"}, |
||||
{name:"YG",value:"粤G"},{name:"YH",value:"粤H"},{name:"YJ",value:"粤J"},{name:"YK",value:"粤K"},{name:"YL",value:"粤L"},{name:"YM",value:"粤M"},{name:"YN",value:"粤N"}, |
||||
{name:"YP",value:"粤P"},{name:"YQ",value:"粤Q"},{name:"YR",value:"粤R"},{name:"YS",value:"粤S"},{name:"YT",value:"粤T"},{name:"YU",value:"粤U"},{name:"YV",value:"粤V"}, |
||||
{name:"YW",value:"粤W"},{name:"YX",value:"粤X"},{name:"YY",value:"粤Y"},{name:"YZ",value:"粤Z"},{name:"EA",value:"鄂A"},{name:"EB",value:"鄂B"},{name:"EC",value:"鄂C"}, |
||||
{name:"ED",value:"鄂D"},{name:"EE",value:"鄂E"},{name:"EF",value:"鄂F"},{name:"EG",value:"鄂G"},{name:"EH",value:"鄂H"},{name:"EJ",value:"鄂J"},{name:"EK",value:"鄂K"}, |
||||
{name:"EL",value:"鄂L"},{name:"EM",value:"鄂M"},{name:"EN",value:"鄂N"},{name:"EP",value:"鄂P"},{name:"EQ",value:"鄂Q"},{name:"ER",value:"鄂R"},{name:"ES",value:"鄂S"}, |
||||
{name:"EAW",value:"鄂AW"},{name:"EO",value:"鄂O"},{name:"GA",value:"桂A"},{name:"GB",value:"桂B"},{name:"GC",value:"桂C"},{name:"GD",value:"桂D"},{name:"GE",value:"桂E"}, |
||||
{name:"GF",value:"桂F"},{name:"GG",value:"桂G"},{name:"GH",value:"桂H"},{name:"HJ",value:"桂J"},{name:"HK",value:"桂K"},{name:"GL",value:"桂L"},{name:"GM",value:"桂M"}, |
||||
{name:"GN",value:"桂N"},{name:"GP",value:"桂P"},{name:"GR",value:"桂R"},{name:"GA",value:"甘A"},{name:"GB",value:"甘B"},{name:"GC",value:"甘C"},{name:"GD",value:"甘D"}, |
||||
{name:"GE",value:"甘E"},{name:"GF",value:"甘F"},{name:"GG",value:"甘G"},{name:"GM",value:"甘H"},{name:"GJ",value:"甘J"},{name:"GK",value:"甘K"},{name:"GL",value:"甘L"}, |
||||
{name:"GM",value:"甘M"},{name:"GN",value:"甘N"},{name:"GP",value:"甘P"},{name:"JA",value:"晋A"},{name:"JB",value:"晋B"},{name:"JC",value:"晋C"},{name:"JD",value:"晋D"}, |
||||
{name:"JE",value:"晋E"},{name:"JF",value:"晋F"},{name:"JH",value:"晋H"},{name:"JJ",value:"晋J"},{name:"JK",value:"晋K"},{name:"JL",value:"晋L"},{name:"JM",value:"晋M"}, |
||||
{name:"MA",value:"蒙A"},{name:"MB",value:"蒙B"},{name:"MC",value:"蒙C"},{name:"MD",value:"蒙D"},{name:"ME",value:"蒙E"},{name:"MF",value:"蒙F"},{name:"MG",value:"蒙G"}, |
||||
{name:"MH",value:"蒙H"},{name:"MJ",value:"蒙J"},{name:"MK",value:"蒙K"},{name:"ML",value:"蒙L"},{name:"MM",value:"蒙M"},{name:"SA",value:"陕A"},{name:"SB",value:"陕B"}, |
||||
{name:"SC",value:"陕C"},{name:"SD",value:"陕D"},{name:"SE",value:"陕E"},{name:"SF",value:"陕F"},{name:"SG",value:"陕G"},{name:"SH",value:"陕H"},{name:"SJ",value:"陕J"}, |
||||
{name:"SK",value:"陕K"},{name:"SV",value:"陕V"},{name:"JA",value:"吉A"},{name:"JB",value:"吉B"},{name:"JC",value:"吉C"},{name:"JD",value:"吉D"},{name:"JE",value:"吉E"}, |
||||
{name:"JF",value:"吉F"},{name:"JG",value:"吉G"},{name:"JH",value:"吉H"},{name:"JJ",value:"吉J"},{name:"JK",value:"吉K"},{name:"MA",value:"闽A"},{name:"MB",value:"闽B"}, |
||||
{name:"MC",value:"闽C"},{name:"MD",value:"闽D"},{name:"ME",value:"闽E"},{name:"MF",value:"闽F"},{name:"MG",value:"闽G"},{name:"MH",value:"闽H"},{name:"MJ",value:"闽J"}, |
||||
{name:"MK",value:"闽K"},{name:"GA",value:"贵A"},{name:"GB",value:"贵B"},{name:"GC",value:"贵C"},{name:"GD",value:"贵D"},{name:"GE",value:"贵E"},{name:"GF",value:"贵F"}, |
||||
{name:"GG",value:"贵G"},{name:"GH",value:"贵H"},{name:"GJ",value:"贵J"},{name:"QA",value:"青A"},{name:"QB",value:"青B"},{name:"QC",value:"青C"},{name:"QD",value:"青D"}, |
||||
{name:"QE",value:"青E"},{name:"QF",value:"青F"},{name:"QG",value:"青G"},{name:"QH",value:"青H"},{name:"ZA",value:"藏A"},{name:"ZB",value:"藏B"},{name:"ZC",value:"藏C"}, |
||||
{name:"ZD",value:"藏D"},{name:"ZE",value:"藏E"},{name:"ZF",value:"藏F"},{name:"ZG",value:"藏G"},{name:"ZH",value:"藏H"},{name:"ZJ",value:"藏J"},{name:"CA",value:"川A"}, |
||||
{name:"CB",value:"川B"},{name:"CC",value:"川C"},{name:"CD",value:"川D"},{name:"CE",value:"川E"},{name:"CF",value:"川F"},{name:"CH",value:"川H"},{name:"CJ",value:"川J"}, |
||||
{name:"CK",value:"川K"},{name:"CL",value:"川L"},{name:"CM",value:"川M"},{name:"JO",value:"川O"},{name:"CQ",value:"川Q"},{name:"CR",value:"川R"},{name:"CS",value:"川S"}, |
||||
{name:"CT",value:"川T"},{name:"CU",value:"川U"},{name:"CV",value:"川V"},{name:"CW",value:"川W"},{name:"CX",value:"川X"},{name:"CY",value:"川Y"},{name:"CZ",value:"川Z"}, |
||||
{name:"NA",value:"宁A"},{name:"NB",value:"宁B"},{name:"NC",value:"宁C"},{name:"ND",value:"宁D"},{name:"NE",value:"宁E"},{name:"XA",value:"新A"},{name:"XB",value:"新B"}, |
||||
{name:"XC",value:"新C"},{name:"XD",value:"新D"},{name:"XE",value:"新E"},{name:"XF",value:"新F"},{name:"XG",value:"新G"},{name:"XH",value:"新H"},{name:"XJ",value:"新J"}, |
||||
{name:"XK",value:"新K"},{name:"XL",value:"新L"},{name:"XM",value:"新M"},{name:"XN",value:"新N"},{name:"XP",value:"新P"},{name:"XQ",value:"新Q"},{name:"XR",value:"新R"}, |
||||
{name:"QA",value:"琼A"},{name:"QB",value:"琼B"},{name:"QC",value:"琼C"},{name:"QD",value:"琼D"},{name:"QE",value:"琼E"}]; |
@ -0,0 +1,61 @@ |
||||
window.onload = function() { |
||||
$("#car_name").on("focus", function() { |
||||
var car_name = $("#car_name").val(); |
||||
if(car_name == "输入车牌") { |
||||
$("#car_name").val(""); |
||||
} |
||||
}); |
||||
$(".next_step").on("click", function() { |
||||
var car_name = $("#car_name").val().toUpperCase(); |
||||
if(car_name == "输入车牌" || car_name == "") { |
||||
layer.open({ |
||||
content: '请输入车牌', |
||||
skin: 'msg', |
||||
time: 2 |
||||
}); |
||||
} else if(check_car_name(car_name) == false) { |
||||
layer.open({ |
||||
content: '请输入正确车牌', |
||||
skin: 'msg', |
||||
time: 2 |
||||
}); |
||||
} else { |
||||
$.ajax({ |
||||
type: "post", |
||||
url: location.href, |
||||
async: false, |
||||
data: { |
||||
"car_name": car_name |
||||
}, |
||||
dataType: "html", |
||||
success: function(data) { |
||||
if(data == 'success') { |
||||
layer.open({ |
||||
content: '绑定成功', |
||||
skin: 'msg', |
||||
time: 2 |
||||
}); |
||||
setTimeout(function(){ |
||||
window.location.href="index.php"; |
||||
},2000); |
||||
} else { |
||||
layer.open({ |
||||
content: '绑定失败', |
||||
skin: 'msg', |
||||
time: 2 |
||||
}); |
||||
} |
||||
} |
||||
}); |
||||
} |
||||
}); |
||||
} |
||||
|
||||
function check_car_name(car_name) { |
||||
var re = /^[\u4e00-\u9fa5]{1}[A-Z]{1}[A-Z_0-9]{5}$/; |
||||
if(car_name.search(re) == -1) { |
||||
return false; |
||||
} else { |
||||
return true; |
||||
} |
||||
} |
@ -0,0 +1,808 @@ |
||||
/* |
||||
* jQuery Autocomplete plugin 1.1 |
||||
* |
||||
* Copyright (c) 2009 Jörn Zaefferer |
||||
* |
||||
* Dual licensed under the MIT and GPL licenses: |
||||
* http://www.opensource.org/licenses/mit-license.php
|
||||
* http://www.gnu.org/licenses/gpl.html
|
||||
* |
||||
* Revision: $Id: jquery.autocomplete.js 15 2009-08-22 10:30:27Z joern.zaefferer $ |
||||
*/ |
||||
|
||||
;(function($) { |
||||
|
||||
$.fn.extend({ |
||||
autocomplete: function(urlOrData, options) { |
||||
var isUrl = typeof urlOrData == "string"; |
||||
options = $.extend({}, $.Autocompleter.defaults, { |
||||
url: isUrl ? urlOrData : null, |
||||
data: isUrl ? null : urlOrData, |
||||
delay: isUrl ? $.Autocompleter.defaults.delay : 10, |
||||
max: options && !options.scroll ? 10 : 150 |
||||
}, options); |
||||
|
||||
// if highlight is set to false, replace it with a do-nothing function
|
||||
options.highlight = options.highlight || function(value) { return value; }; |
||||
|
||||
// if the formatMatch option is not specified, then use formatItem for backwards compatibility
|
||||
options.formatMatch = options.formatMatch || options.formatItem; |
||||
|
||||
return this.each(function() { |
||||
new $.Autocompleter(this, options); |
||||
}); |
||||
}, |
||||
result: function(handler) { |
||||
return this.bind("result", handler); |
||||
}, |
||||
search: function(handler) { |
||||
return this.trigger("search", [handler]); |
||||
}, |
||||
flushCache: function() { |
||||
return this.trigger("flushCache"); |
||||
}, |
||||
setOptions: function(options){ |
||||
return this.trigger("setOptions", [options]); |
||||
}, |
||||
unautocomplete: function() { |
||||
return this.trigger("unautocomplete"); |
||||
} |
||||
}); |
||||
|
||||
$.Autocompleter = function(input, options) { |
||||
|
||||
var KEY = { |
||||
UP: 38, |
||||
DOWN: 40, |
||||
DEL: 46, |
||||
TAB: 9, |
||||
RETURN: 13, |
||||
ESC: 27, |
||||
COMMA: 188, |
||||
PAGEUP: 33, |
||||
PAGEDOWN: 34, |
||||
BACKSPACE: 8 |
||||
}; |
||||
|
||||
// Create $ object for input element
|
||||
var $input = $(input).attr("autocomplete", "off").addClass(options.inputClass); |
||||
|
||||
var timeout; |
||||
var previousValue = ""; |
||||
var cache = $.Autocompleter.Cache(options); |
||||
var hasFocus = 0; |
||||
var lastKeyPressCode; |
||||
var config = { |
||||
mouseDownOnSelect: false |
||||
}; |
||||
var select = $.Autocompleter.Select(options, input, selectCurrent, config); |
||||
|
||||
var blockSubmit; |
||||
|
||||
// prevent form submit in opera when selecting with return key
|
||||
$.browser.opera && $(input.form).bind("submit.autocomplete", function() { |
||||
if (blockSubmit) { |
||||
blockSubmit = false; |
||||
return false; |
||||
} |
||||
}); |
||||
|
||||
// only opera doesn't trigger keydown multiple times while pressed, others don't work with keypress at all
|
||||
$input.bind(($.browser.opera ? "keypress" : "keydown") + ".autocomplete", function(event) { |
||||
// a keypress means the input has focus
|
||||
// avoids issue where input had focus before the autocomplete was applied
|
||||
hasFocus = 1; |
||||
// track last key pressed
|
||||
lastKeyPressCode = event.keyCode; |
||||
switch(event.keyCode) { |
||||
|
||||
case KEY.UP: |
||||
event.preventDefault(); |
||||
if ( select.visible() ) { |
||||
select.prev(); |
||||
} else { |
||||
onChange(0, true); |
||||
} |
||||
break; |
||||
|
||||
case KEY.DOWN: |
||||
event.preventDefault(); |
||||
if ( select.visible() ) { |
||||
select.next(); |
||||
} else { |
||||
onChange(0, true); |
||||
} |
||||
break; |
||||
|
||||
case KEY.PAGEUP: |
||||
event.preventDefault(); |
||||
if ( select.visible() ) { |
||||
select.pageUp(); |
||||
} else { |
||||
onChange(0, true); |
||||
} |
||||
break; |
||||
|
||||
case KEY.PAGEDOWN: |
||||
event.preventDefault(); |
||||
if ( select.visible() ) { |
||||
select.pageDown(); |
||||
} else { |
||||
onChange(0, true); |
||||
} |
||||
break; |
||||
|
||||
// matches also semicolon
|
||||
case options.multiple && $.trim(options.multipleSeparator) == "," && KEY.COMMA: |
||||
case KEY.TAB: |
||||
case KEY.RETURN: |
||||
if( selectCurrent() ) { |
||||
// stop default to prevent a form submit, Opera needs special handling
|
||||
event.preventDefault(); |
||||
blockSubmit = true; |
||||
return false; |
||||
} |
||||
break; |
||||
|
||||
case KEY.ESC: |
||||
select.hide(); |
||||
break; |
||||
|
||||
default: |
||||
clearTimeout(timeout); |
||||
timeout = setTimeout(onChange, options.delay); |
||||
break; |
||||
} |
||||
}).focus(function(){ |
||||
// track whether the field has focus, we shouldn't process any
|
||||
// results if the field no longer has focus
|
||||
hasFocus++; |
||||
}).blur(function() { |
||||
hasFocus = 0; |
||||
if (!config.mouseDownOnSelect) { |
||||
hideResults(); |
||||
} |
||||
}).click(function() { |
||||
// show select when clicking in a focused field
|
||||
if ( hasFocus++ > 1 && !select.visible() ) { |
||||
onChange(0, true); |
||||
} |
||||
}).bind("search", function() { |
||||
// TODO why not just specifying both arguments?
|
||||
var fn = (arguments.length > 1) ? arguments[1] : null; |
||||
function findValueCallback(q, data) { |
||||
var result; |
||||
if( data && data.length ) { |
||||
for (var i=0; i < data.length; i++) { |
||||
if( data[i].result.toLowerCase() == q.toLowerCase() ) { |
||||
result = data[i]; |
||||
break; |
||||
} |
||||
} |
||||
} |
||||
if( typeof fn == "function" ) fn(result); |
||||
else $input.trigger("result", result && [result.data, result.value]); |
||||
} |
||||
$.each(trimWords($input.val()), function(i, value) { |
||||
request(value, findValueCallback, findValueCallback); |
||||
}); |
||||
}).bind("flushCache", function() { |
||||
cache.flush(); |
||||
}).bind("setOptions", function() { |
||||
$.extend(options, arguments[1]); |
||||
// if we've updated the data, repopulate
|
||||
if ( "data" in arguments[1] ) |
||||
cache.populate(); |
||||
}).bind("unautocomplete", function() { |
||||
select.unbind(); |
||||
$input.unbind(); |
||||
$(input.form).unbind(".autocomplete"); |
||||
}); |
||||
|
||||
|
||||
function selectCurrent() { |
||||
var selected = select.selected(); |
||||
if( !selected ) |
||||
return false; |
||||
|
||||
var v = selected.result; |
||||
previousValue = v; |
||||
|
||||
if ( options.multiple ) { |
||||
var words = trimWords($input.val()); |
||||
if ( words.length > 1 ) { |
||||
var seperator = options.multipleSeparator.length; |
||||
var cursorAt = $(input).selection().start; |
||||
var wordAt, progress = 0; |
||||
$.each(words, function(i, word) { |
||||
progress += word.length; |
||||
if (cursorAt <= progress) { |
||||
wordAt = i; |
||||
return false; |
||||
} |
||||
progress += seperator; |
||||
}); |
||||
words[wordAt] = v; |
||||
// TODO this should set the cursor to the right position, but it gets overriden somewhere
|
||||
//$.Autocompleter.Selection(input, progress + seperator, progress + seperator);
|
||||
v = words.join( options.multipleSeparator ); |
||||
} |
||||
v += options.multipleSeparator; |
||||
} |
||||
|
||||
$input.val(v); |
||||
hideResultsNow(); |
||||
$input.trigger("result", [selected.data, selected.value]); |
||||
return true; |
||||
} |
||||
|
||||
function onChange(crap, skipPrevCheck) { |
||||
if( lastKeyPressCode == KEY.DEL ) { |
||||
select.hide(); |
||||
return; |
||||
} |
||||
|
||||
var currentValue = $input.val(); |
||||
|
||||
if ( !skipPrevCheck && currentValue == previousValue ) |
||||
return; |
||||
|
||||
previousValue = currentValue; |
||||
|
||||
currentValue = lastWord(currentValue); |
||||
if ( currentValue.length >= options.minChars) { |
||||
$input.addClass(options.loadingClass); |
||||
if (!options.matchCase) |
||||
currentValue = currentValue.toLowerCase(); |
||||
request(currentValue, receiveData, hideResultsNow); |
||||
} else { |
||||
stopLoading(); |
||||
select.hide(); |
||||
} |
||||
}; |
||||
|
||||
function trimWords(value) { |
||||
if (!value) |
||||
return [""]; |
||||
if (!options.multiple) |
||||
return [$.trim(value)]; |
||||
return $.map(value.split(options.multipleSeparator), function(word) { |
||||
return $.trim(value).length ? $.trim(word) : null; |
||||
}); |
||||
} |
||||
|
||||
function lastWord(value) { |
||||
if ( !options.multiple ) |
||||
return value; |
||||
var words = trimWords(value); |
||||
if (words.length == 1)
|
||||
return words[0]; |
||||
var cursorAt = $(input).selection().start; |
||||
if (cursorAt == value.length) { |
||||
words = trimWords(value) |
||||
} else { |
||||
words = trimWords(value.replace(value.substring(cursorAt), "")); |
||||
} |
||||
return words[words.length - 1]; |
||||
} |
||||
|
||||
// fills in the input box w/the first match (assumed to be the best match)
|
||||
// q: the term entered
|
||||
// sValue: the first matching result
|
||||
function autoFill(q, sValue){ |
||||
// autofill in the complete box w/the first match as long as the user hasn't entered in more data
|
||||
// if the last user key pressed was backspace, don't autofill
|
||||
if( options.autoFill && (lastWord($input.val()).toLowerCase() == q.toLowerCase()) && lastKeyPressCode != KEY.BACKSPACE ) { |
||||
// fill in the value (keep the case the user has typed)
|
||||
$input.val($input.val() + sValue.substring(lastWord(previousValue).length)); |
||||
// select the portion of the value not typed by the user (so the next character will erase)
|
||||
$(input).selection(previousValue.length, previousValue.length + sValue.length); |
||||
} |
||||
}; |
||||
|
||||
function hideResults() { |
||||
clearTimeout(timeout); |
||||
timeout = setTimeout(hideResultsNow, 200); |
||||
}; |
||||
|
||||
function hideResultsNow() { |
||||
var wasVisible = select.visible(); |
||||
select.hide(); |
||||
clearTimeout(timeout); |
||||
stopLoading(); |
||||
if (options.mustMatch) { |
||||
// call search and run callback
|
||||
$input.search( |
||||
function (result){ |
||||
// if no value found, clear the input box
|
||||
if( !result ) { |
||||
if (options.multiple) { |
||||
var words = trimWords($input.val()).slice(0, -1); |
||||
$input.val( words.join(options.multipleSeparator) + (words.length ? options.multipleSeparator : "") ); |
||||
} |
||||
else { |
||||
$input.val( "" ); |
||||
$input.trigger("result", null); |
||||
} |
||||
} |
||||
} |
||||
); |
||||
} |
||||
}; |
||||
|
||||
function receiveData(q, data) { |
||||
if ( data && data.length && hasFocus ) { |
||||
stopLoading(); |
||||
select.display(data, q); |
||||
autoFill(q, data[0].value); |
||||
select.show(); |
||||
} else { |
||||
hideResultsNow(); |
||||
} |
||||
}; |
||||
|
||||
function request(term, success, failure) { |
||||
if (!options.matchCase) |
||||
term = term.toLowerCase(); |
||||
var data = cache.load(term); |
||||
// recieve the cached data
|
||||
if (data && data.length) { |
||||
success(term, data); |
||||
// if an AJAX url has been supplied, try loading the data now
|
||||
} else if( (typeof options.url == "string") && (options.url.length > 0) ){ |
||||
|
||||
var extraParams = { |
||||
timestamp: +new Date() |
||||
}; |
||||
$.each(options.extraParams, function(key, param) { |
||||
extraParams[key] = typeof param == "function" ? param() : param; |
||||
}); |
||||
|
||||
$.ajax({ |
||||
// try to leverage ajaxQueue plugin to abort previous requests
|
||||
mode: "abort", |
||||
// limit abortion to this input
|
||||
port: "autocomplete" + input.name, |
||||
dataType: options.dataType, |
||||
url: options.url, |
||||
data: $.extend({ |
||||
q: lastWord(term), |
||||
limit: options.max |
||||
}, extraParams), |
||||
success: function(data) { |
||||
var parsed = options.parse && options.parse(data) || parse(data); |
||||
cache.add(term, parsed); |
||||
success(term, parsed); |
||||
} |
||||
}); |
||||
} else { |
||||
// if we have a failure, we need to empty the list -- this prevents the the [TAB] key from selecting the last successful match
|
||||
select.emptyList(); |
||||
failure(term); |
||||
} |
||||
}; |
||||
|
||||
function parse(data) { |
||||
var parsed = []; |
||||
var rows = data.split("\n"); |
||||
for (var i=0; i < rows.length; i++) { |
||||
var row = $.trim(rows[i]); |
||||
if (row) { |
||||
row = row.split("|"); |
||||
parsed[parsed.length] = { |
||||
data: row, |
||||
value: row[0], |
||||
result: options.formatResult && options.formatResult(row, row[0]) || row[0] |
||||
}; |
||||
} |
||||
} |
||||
return parsed; |
||||
}; |
||||
|
||||
function stopLoading() { |
||||
$input.removeClass(options.loadingClass); |
||||
}; |
||||
|
||||
}; |
||||
|
||||
$.Autocompleter.defaults = { |
||||
inputClass: "ac_input", |
||||
resultsClass: "ac_results", |
||||
loadingClass: "ac_loading", |
||||
minChars: 1, |
||||
delay: 400, |
||||
matchCase: false, |
||||
matchSubset: true, |
||||
matchContains: false, |
||||
cacheLength: 10, |
||||
max: 100, |
||||
mustMatch: false, |
||||
extraParams: {}, |
||||
selectFirst: true, |
||||
formatItem: function(row) { return row[0]; }, |
||||
formatMatch: null, |
||||
autoFill: false, |
||||
width: 0, |
||||
multiple: false, |
||||
multipleSeparator: ", ", |
||||
highlight: function(value, term) { |
||||
return value.replace(new RegExp("(?![^&;]+;)(?!<[^<>]*)(" + term.replace(/([\^\$\(\)\[\]\{\}\*\.\+\?\|\\])/gi, "\\$1") + ")(?![^<>]*>)(?![^&;]+;)", "gi"), "<strong>$1</strong>"); |
||||
}, |
||||
scroll: true, |
||||
scrollHeight: 180 |
||||
}; |
||||
|
||||
$.Autocompleter.Cache = function(options) { |
||||
|
||||
var data = {}; |
||||
var length = 0; |
||||
|
||||
function matchSubset(s, sub) { |
||||
if (!options.matchCase)
|
||||
s = s.toLowerCase(); |
||||
var i = s.indexOf(sub); |
||||
if (options.matchContains == "word"){ |
||||
i = s.toLowerCase().search("\\b" + sub.toLowerCase()); |
||||
} |
||||
if (i == -1) return false; |
||||
return i == 0 || options.matchContains; |
||||
}; |
||||
|
||||
function add(q, value) { |
||||
if (length > options.cacheLength){ |
||||
flush(); |
||||
} |
||||
if (!data[q]){
|
||||
length++; |
||||
} |
||||
data[q] = value; |
||||
} |
||||
|
||||
function populate(){ |
||||
if( !options.data ) return false; |
||||
// track the matches
|
||||
var stMatchSets = {}, |
||||
nullData = 0; |
||||
|
||||
// no url was specified, we need to adjust the cache length to make sure it fits the local data store
|
||||
if( !options.url ) options.cacheLength = 1; |
||||
|
||||
// track all options for minChars = 0
|
||||
stMatchSets[""] = []; |
||||
|
||||
// loop through the array and create a lookup structure
|
||||
for ( var i = 0, ol = options.data.length; i < ol; i++ ) { |
||||
var rawValue = options.data[i]; |
||||
// if rawValue is a string, make an array otherwise just reference the array
|
||||
rawValue = (typeof rawValue == "string") ? [rawValue] : rawValue; |
||||
|
||||
var value = options.formatMatch(rawValue, i+1, options.data.length); |
||||
if ( value === false ) |
||||
continue; |
||||
|
||||
var firstChar = value.charAt(0).toLowerCase(); |
||||
// if no lookup array for this character exists, look it up now
|
||||
if( !stMatchSets[firstChar] )
|
||||
stMatchSets[firstChar] = []; |
||||
|
||||
// if the match is a string
|
||||
var row = { |
||||
value: value, |
||||
data: rawValue, |
||||
result: options.formatResult && options.formatResult(rawValue) || value |
||||
}; |
||||
|
||||
// push the current match into the set list
|
||||
stMatchSets[firstChar].push(row); |
||||
|
||||
// keep track of minChars zero items
|
||||
if ( nullData++ < options.max ) { |
||||
stMatchSets[""].push(row); |
||||
} |
||||
}; |
||||
|
||||
// add the data items to the cache
|
||||
$.each(stMatchSets, function(i, value) { |
||||
// increase the cache size
|
||||
options.cacheLength++; |
||||
// add to the cache
|
||||
add(i, value); |
||||
}); |
||||
} |
||||
|
||||
// populate any existing data
|
||||
setTimeout(populate, 25); |
||||
|
||||
function flush(){ |
||||
data = {}; |
||||
length = 0; |
||||
} |
||||
|
||||
return { |
||||
flush: flush, |
||||
add: add, |
||||
populate: populate, |
||||
load: function(q) { |
||||
if (!options.cacheLength || !length) |
||||
return null; |
||||
/* |
||||
* if dealing w/local data and matchContains than we must make sure |
||||
* to loop through all the data collections looking for matches |
||||
*/ |
||||
if( !options.url && options.matchContains ){ |
||||
// track all matches
|
||||
var csub = []; |
||||
// loop through all the data grids for matches
|
||||
for( var k in data ){ |
||||
// don't search through the stMatchSets[""] (minChars: 0) cache
|
||||
// this prevents duplicates
|
||||
if( k.length > 0 ){ |
||||
var c = data[k]; |
||||
$.each(c, function(i, x) { |
||||
// if we've got a match, add it to the array
|
||||
if (matchSubset(x.value, q)) { |
||||
csub.push(x); |
||||
} |
||||
}); |
||||
} |
||||
}
|
||||
return csub; |
||||
} else
|
||||
// if the exact item exists, use it
|
||||
if (data[q]){ |
||||
return data[q]; |
||||
} else |
||||
if (options.matchSubset) { |
||||
for (var i = q.length - 1; i >= options.minChars; i--) { |
||||
var c = data[q.substr(0, i)]; |
||||
if (c) { |
||||
var csub = []; |
||||
$.each(c, function(i, x) { |
||||
if (matchSubset(x.value, q)) { |
||||
csub[csub.length] = x; |
||||
} |
||||
}); |
||||
return csub; |
||||
} |
||||
} |
||||
} |
||||
return null; |
||||
} |
||||
}; |
||||
}; |
||||
|
||||
$.Autocompleter.Select = function (options, input, select, config) { |
||||
var CLASSES = { |
||||
ACTIVE: "ac_over" |
||||
}; |
||||
|
||||
var listItems, |
||||
active = -1, |
||||
data, |
||||
term = "", |
||||
needsInit = true, |
||||
element, |
||||
list; |
||||
|
||||
// Create results
|
||||
function init() { |
||||
if (!needsInit) |
||||
return; |
||||
element = $("<div/>") |
||||
.hide() |
||||
.addClass(options.resultsClass) |
||||
.css("position", "absolute") |
||||
.appendTo(document.body); |
||||
|
||||
list = $("<ul/>").appendTo(element).mouseover( function(event) { |
||||
if(target(event).nodeName && target(event).nodeName.toUpperCase() == 'LI') { |
||||
active = $("li", list).removeClass(CLASSES.ACTIVE).index(target(event)); |
||||
$(target(event)).addClass(CLASSES.ACTIVE);
|
||||
} |
||||
}).click(function(event) { |
||||
$(target(event)).addClass(CLASSES.ACTIVE); |
||||
select(); |
||||
// TODO provide option to avoid setting focus again after selection? useful for cleanup-on-focus
|
||||
input.focus(); |
||||
return false; |
||||
}).mousedown(function() { |
||||
config.mouseDownOnSelect = true; |
||||
}).mouseup(function() { |
||||
config.mouseDownOnSelect = false; |
||||
}); |
||||
|
||||
if( options.width > 0 ) |
||||
element.css("width", options.width); |
||||
|
||||
needsInit = false; |
||||
}
|
||||
|
||||
function target(event) { |
||||
var element = event.target; |
||||
while(element && element.tagName != "LI") |
||||
element = element.parentNode; |
||||
// more fun with IE, sometimes event.target is empty, just ignore it then
|
||||
if(!element) |
||||
return []; |
||||
return element; |
||||
} |
||||
|
||||
function moveSelect(step) { |
||||
listItems.slice(active, active + 1).removeClass(CLASSES.ACTIVE); |
||||
movePosition(step); |
||||
var activeItem = listItems.slice(active, active + 1).addClass(CLASSES.ACTIVE); |
||||
if(options.scroll) { |
||||
var offset = 0; |
||||
listItems.slice(0, active).each(function() { |
||||
offset += this.offsetHeight; |
||||
}); |
||||
if((offset + activeItem[0].offsetHeight - list.scrollTop()) > list[0].clientHeight) { |
||||
list.scrollTop(offset + activeItem[0].offsetHeight - list.innerHeight()); |
||||
} else if(offset < list.scrollTop()) { |
||||
list.scrollTop(offset); |
||||
} |
||||
} |
||||
}; |
||||
|
||||
function movePosition(step) { |
||||
active += step; |
||||
if (active < 0) { |
||||
active = listItems.size() - 1; |
||||
} else if (active >= listItems.size()) { |
||||
active = 0; |
||||
} |
||||
} |
||||
|
||||
function limitNumberOfItems(available) { |
||||
return options.max && options.max < available |
||||
? options.max |
||||
: available; |
||||
} |
||||
|
||||
function fillList() { |
||||
list.empty(); |
||||
var max = limitNumberOfItems(data.length); |
||||
for (var i=0; i < max; i++) { |
||||
if (!data[i]) |
||||
continue; |
||||
var formatted = options.formatItem(data[i].data, i+1, max, data[i].value, term); |
||||
if ( formatted === false ) |
||||
continue; |
||||
var li = $("<li/>").html( options.highlight(formatted, term) ).addClass(i%2 == 0 ? "ac_even" : "ac_odd").appendTo(list)[0]; |
||||
$.data(li, "ac_data", data[i]); |
||||
} |
||||
listItems = list.find("li"); |
||||
if ( options.selectFirst ) { |
||||
listItems.slice(0, 1).addClass(CLASSES.ACTIVE); |
||||
active = 0; |
||||
} |
||||
// apply bgiframe if available
|
||||
if ( $.fn.bgiframe ) |
||||
list.bgiframe(); |
||||
} |
||||
|
||||
return { |
||||
display: function(d, q) { |
||||
init(); |
||||
data = d; |
||||
term = q; |
||||
fillList(); |
||||
}, |
||||
next: function() { |
||||
moveSelect(1); |
||||
}, |
||||
prev: function() { |
||||
moveSelect(-1); |
||||
}, |
||||
pageUp: function() { |
||||
if (active != 0 && active - 8 < 0) { |
||||
moveSelect( -active ); |
||||
} else { |
||||
moveSelect(-8); |
||||
} |
||||
}, |
||||
pageDown: function() { |
||||
if (active != listItems.size() - 1 && active + 8 > listItems.size()) { |
||||
moveSelect( listItems.size() - 1 - active ); |
||||
} else { |
||||
moveSelect(8); |
||||
} |
||||
}, |
||||
hide: function() { |
||||
element && element.hide(); |
||||
listItems && listItems.removeClass(CLASSES.ACTIVE); |
||||
active = -1; |
||||
}, |
||||
visible : function() { |
||||
return element && element.is(":visible"); |
||||
}, |
||||
current: function() { |
||||
return this.visible() && (listItems.filter("." + CLASSES.ACTIVE)[0] || options.selectFirst && listItems[0]); |
||||
}, |
||||
show: function() { |
||||
var offset = $(input).offset(); |
||||
element.css({ |
||||
width: typeof options.width == "string" || options.width > 0 ? options.width : $(input).width(), |
||||
top: offset.top + input.offsetHeight, |
||||
left: offset.left |
||||
}).show(); |
||||
if(options.scroll) { |
||||
list.scrollTop(0); |
||||
list.css({ |
||||
maxHeight: options.scrollHeight, |
||||
overflow: 'auto' |
||||
}); |
||||
|
||||
if($.browser.msie && typeof document.body.style.maxHeight === "undefined") { |
||||
var listHeight = 0; |
||||
listItems.each(function() { |
||||
listHeight += this.offsetHeight; |
||||
}); |
||||
var scrollbarsVisible = listHeight > options.scrollHeight; |
||||
list.css('height', scrollbarsVisible ? options.scrollHeight : listHeight ); |
||||
if (!scrollbarsVisible) { |
||||
// IE doesn't recalculate width when scrollbar disappears
|
||||
listItems.width( list.width() - parseInt(listItems.css("padding-left")) - parseInt(listItems.css("padding-right")) ); |
||||
} |
||||
} |
||||
|
||||
} |
||||
}, |
||||
selected: function() { |
||||
var selected = listItems && listItems.filter("." + CLASSES.ACTIVE).removeClass(CLASSES.ACTIVE); |
||||
return selected && selected.length && $.data(selected[0], "ac_data"); |
||||
}, |
||||
emptyList: function (){ |
||||
list && list.empty(); |
||||
}, |
||||
unbind: function() { |
||||
element && element.remove(); |
||||
} |
||||
}; |
||||
}; |
||||
|
||||
$.fn.selection = function(start, end) { |
||||
if (start !== undefined) { |
||||
return this.each(function() { |
||||
if( this.createTextRange ){ |
||||
var selRange = this.createTextRange(); |
||||
if (end === undefined || start == end) { |
||||
selRange.move("character", start); |
||||
selRange.select(); |
||||
} else { |
||||
selRange.collapse(true); |
||||
selRange.moveStart("character", start); |
||||
selRange.moveEnd("character", end); |
||||
selRange.select(); |
||||
} |
||||
} else if( this.setSelectionRange ){ |
||||
this.setSelectionRange(start, end); |
||||
} else if( this.selectionStart ){ |
||||
this.selectionStart = start; |
||||
this.selectionEnd = end; |
||||
} |
||||
}); |
||||
} |
||||
var field = this[0]; |
||||
if ( field.createTextRange ) { |
||||
var range = document.selection.createRange(), |
||||
orig = field.value, |
||||
teststring = "<->", |
||||
textLength = range.text.length; |
||||
range.text = teststring; |
||||
var caretAt = field.value.indexOf(teststring); |
||||
field.value = orig; |
||||
this.selection(caretAt, caretAt + textLength); |
||||
return { |
||||
start: caretAt, |
||||
end: caretAt + textLength |
||||
} |
||||
} else if( field.selectionStart !== undefined ){ |
||||
return { |
||||
start: field.selectionStart, |
||||
end: field.selectionEnd |
||||
} |
||||
} |
||||
}; |
||||
|
||||
})(jQuery); |
File diff suppressed because one or more lines are too long
@ -0,0 +1,2 @@ |
||||
/*! layer mobile-v2.0.0 Web弹层组件 LGPL License http://layer.layui.com/mobile By 贤心 */ |
||||
;!function(e){"use strict";var t=document,n="querySelectorAll",i="getElementsByClassName",a=function(e){return t[n](e)},s={type:0,shade:!0,shadeClose:!0,fixed:!0,anim:"scale"},l={extend:function(e){var t=JSON.parse(JSON.stringify(s));for(var n in e)t[n]=e[n];return t},timer:{},end:{}};l.touch=function(e,t){e.addEventListener("click",function(e){t.call(this,e)},!1)};var r=0,o=["layui-m-layer"],c=function(e){var t=this;t.config=l.extend(e),t.view()};c.prototype.view=function(){var e=this,n=e.config,s=t.createElement("div");e.id=s.id=o[0]+r,s.setAttribute("class",o[0]+" "+o[0]+(n.type||0)),s.setAttribute("index",r);var l=function(){var e="object"==typeof n.title;return n.title?'<h3 style="'+(e?n.title[1]:"")+'">'+(e?n.title[0]:n.title)+"</h3>":""}(),c=function(){"string"==typeof n.btn&&(n.btn=[n.btn]);var e,t=(n.btn||[]).length;return 0!==t&&n.btn?(e='<span yes type="1">'+n.btn[0]+"</span>",2===t&&(e='<span no type="0">'+n.btn[1]+"</span>"+e),'<div class="layui-m-layerbtn">'+e+"</div>"):""}();if(n.fixed||(n.top=n.hasOwnProperty("top")?n.top:100,n.style=n.style||"",n.style+=" top:"+(t.body.scrollTop+n.top)+"px"),2===n.type&&(n.content='<i></i><i class="layui-m-layerload"></i><i></i><p>'+(n.content||"")+"</p>"),n.skin&&(n.anim="up"),"msg"===n.skin&&(n.shade=!1),s.innerHTML=(n.shade?"<div "+("string"==typeof n.shade?'style="'+n.shade+'"':"")+' class="layui-m-layershade"></div>':"")+'<div class="layui-m-layermain" '+(n.fixed?"":'style="position:static;"')+'><div class="layui-m-layersection"><div class="layui-m-layerchild '+(n.skin?"layui-m-layer-"+n.skin+" ":"")+(n.className?n.className:"")+" "+(n.anim?"layui-m-anim-"+n.anim:"")+'" '+(n.style?'style="'+n.style+'"':"")+">"+l+'<div class="layui-m-layercont">'+n.content+"</div>"+c+"</div></div></div>",!n.type||2===n.type){var d=t[i](o[0]+n.type),y=d.length;y>=1&&layer.close(d[0].getAttribute("index"))}document.body.appendChild(s);var u=e.elem=a("#"+e.id)[0];n.success&&n.success(u),e.index=r++,e.action(n,u)},c.prototype.action=function(e,t){var n=this;e.time&&(l.timer[n.index]=setTimeout(function(){layer.close(n.index)},1e3*e.time));var a=function(){var t=this.getAttribute("type");0==t?(e.no&&e.no(),layer.close(n.index)):e.yes?e.yes(n.index):layer.close(n.index)};if(e.btn)for(var s=t[i]("layui-m-layerbtn")[0].children,r=s.length,o=0;o<r;o++)l.touch(s[o],a);if(e.shade&&e.shadeClose){var c=t[i]("layui-m-layershade")[0];l.touch(c,function(){layer.close(n.index,e.end)})}e.end&&(l.end[n.index]=e.end)},e.layer={v:"2.0",index:r,open:function(e){var t=new c(e||{});return t.index},close:function(e){var n=a("#"+o[0]+e)[0];n&&(n.innerHTML="",t.body.removeChild(n),clearTimeout(l.timer[e]),delete l.timer[e],"function"==typeof l.end[e]&&l.end[e](),delete l.end[e])},closeAll:function(){for(var e=t[i](o[0]),n=0,a=e.length;n<a;n++)layer.close(0|e[0].getAttribute("index"))}},"function"==typeof define?define(function(){return layer}):function(){var e=document.scripts,n=e[e.length-1],i=n.src,a=i.substring(0,i.lastIndexOf("/")+1);n.getAttribute("merge")||document.head.appendChild(function(){var e=t.createElement("link");return e.href=a+"need/layer.css?2.0",e.type="text/css",e.rel="styleSheet",e.id="layermcss",e}())}()}(window); |
@ -1,6 +1,6 @@ |
||||
<?php |
||||
|
||||
include './functions.php'; |
||||
include '../functions.php'; |
||||
|
||||
|
||||
Header("HTTP/1.1 301 Moved Permanently"); |
Loading…
Reference in new issue