|
今天在网上看到一篇文章,在Magento中会员注册,输入email时会下拉提示常用后缀,对用户体验不错,然后就把它转载到我的博客里。现在做电子商务竟争越来越大,不少人都为网站的用户体验费尽了脑汁。用户体验越来越重要,所以小小的功能对网站提示至关重要,让客户对网站没那么反感。如下图: js文件内容: 比如在客户登录页面应用。
jQuery(function($) {
var mailArr = new Array("@hotmail.com", "@gmail.com", "@yahoo.com", "@aol.com", "@hotmail.co.uk", "@msn.com", "@yahoo.co.uk", "@comcast.net", "@live.com", "@laposte.net", "@googlemail.com");
$.fn.mailAutoTip = function(options) {
var setting = {
subBox: "#MailAutoTip", //下拉框div
subOp: "li",
id: "#email , #email_address", //email输入框的id属性,在其他地方调用需要在此添加输入框属性.
mailArr: mailArr,
hoverClass: "on",
_cur: 0 /*index*/
};
var opts = $.extend({}, setting, options || {});
//tipFun
var tipFun = function(_v, o) {
opts._cur = 0;
var _that = o;
$(opts.subBox).show();
var str = "<ul>";
str += "<li id=\"e_type\"> Please select email type:</li>";
var e = _v.indexOf("@");
if (e == -1) {
$.each(opts.mailArr, function(s, m) {
str += '<li><a href="javascript:void(0)" >' + _v + m + "</a></li>";
});
} else {
var _sh = _v.substring(0, e)
var _se = _v.substring(e);
var ind = 0;
$.each(opts.mailArr, function(s, m) {
if (m.indexOf(_se) != -1) {
str += '<li><a href="javascript:void(0)" >' + _sh + m + "</a></li>";
ind = 1;
}
});
if (ind == 0) {
str += '<li><a class="cur_val" href="javascript:void(0)" >' + _v + "</a></li>";
}
}
str += "</ul>";
$(opts.subBox).html(str); /*hover*/
$(opts.subBox).find(opts.subOp).hover(function() {
var _that = $(this);
_that.addClass(opts.hoverClass);
}, function() {
var _that = $(this);
_that.removeClass(opts.hoverClass)
}); /*click*/
$(opts.subBox).find(opts.subOp).each(function() {
$(this).click(function(e) {
if ($(e.target).attr("id") != "e_type") {
$(opts.id).val($(e.target).html());
$(opts.subBox).hide();
e.stopPropagation();
}
});
})
}; /*itemFun*/
var itemFun = function() {
var _tempArr = $(opts.subBox).find(opts.subOp);
var _size = _tempArr.size();
for (var i = 0; i < _size; i++) {
_tempArr.eq(i).removeClass(opts.hoverClass);
}
if (_size > 1) {
if (opts._cur > _size - 1) {
opts._cur = 1;
}
if (opts._cur < 1) {
opts._cur = _size - 1;
}
_tempArr.eq(opts._cur).addClass(opts.hoverClass);
} else {
opts._cur = 1;
}
};
$(opts.id).keyup(function(e) {
var _that = $(this);
if (_that.val() != "") {
if (e.keyCode != 38 && e.keyCode != 40 && e.keyCode != 13 && e.keyCode != 27) {
var _inputVal = _that.val();
tipFun(_inputVal, _that);
}
} else {
$(opts.subBox).hide();
}
});
$(document).bind("click", function(e) {
$(opts.subBox).hide();
});
$(document).keydown(function(e) {
switch (e.keyCode) {
case 40:
//up
opts._cur++;
itemFun()
break;
case 38:
//down
opts._cur--;
itemFun()
break;
default:
break;
}
})
$(opts.id).keydown(function(e) {
var _temp = $(opts.subBox).find(opts.subOp);
if (e.keyCode == 13) {
if (opts._cur != 0) {
$(this).val(_temp.eq(opts._cur).text());
opts._cur = 0;
}
$(opts.subBox).hide();
e.stopPropagation();
}
});
}
});
…/template/persistent/customer/form/login.phtml(模板的不同相应的文件可能会不一样)
<input type="text" name="login[username]" value="<?php echo $this->htmlEscape($this->getUsername()) ?>" id="email" class="input-text required-entry validate-email" title="<?php echo $this->__('Email Address') ?>" />
<!---在下面新增类容--->
<div id="MailAutoTip" class="mailAutoTip"> </div><!----- 此div是必须要有的---->
<script type="text/javascript">
jQuery(function($){
$("#email").mailAutoTip();
});
//此方法是赋予id为“emial”的输入框以mailAutoTip效果 在其他地方调用只需修改对应的id属性
</script>
最后附加css (参考)
.mailAutoTip {
background: none repeat scroll 0 0 #fff;
border: 1px solid #ccc;
display: none;
position: absolute;
width: 254px;
z-index: 100
}
#MailAutoTip li {
height: 24px;
margin: 0;
line-height: 24px
}
#MailAutoTip li a {
display: block;
overflow: hidden;
padding-left: 5px;
width: 245px;
color: #333
}
#MailAutoTip li a:hover,.mailAutoTip li.on a {
background: none repeat scroll 0 0 #00388a;
color: #fff;
text-decoration: none
}
寻找了好长时间这段js代码是最好用的,简单轻量级,兼容ie7以上 firefox chrome,欢迎大家测试。 (责任编辑:最模板) |

