时间:2012-07-13 作者:剧中人
这是小剧实验室的第一篇文章,很是激动,就拿一个比较简单的特效来写吧。这是很多博客、留言等等都会用到的特效。其实这个效果很简单,就是每个输入框在输入之前都会有一个默认的值,点击之后自动清空,当输入框失去焦点的时候,如果没有输入任何字符,输入框再恢复为原来的默认值。下面是体验效果:
<input name="keyboard" type="text" size="10" id="keyboard" value="搜索站内内容" onclick="if (this.value=='搜索站内内容') this.value=''" onblur="if (value ==''){value='搜索站内内容'}"/>
很明显,这种js与html混杂在一起的写法很不利于页面的清洁和高效率的开发。于是就有了函数调用的写法,这里就不贴代码了,因为这样也并未真正做到js与html分离。比较专业一点儿的写法是下面这样的(这里使用的jquery框架):
//html部分
<input name="keyboard" type="text" size="10" id="keyboard" value="搜索站内内容"/>
//js部分
$(docunment).ready(function(){
$('#keyboard').click(function(){
if($(this).attr('value')=="搜索站内内容"){
$(this).attr('value','');
}
});
$('#keyboard').blur(function(){
if($(this).attr('value')==") {
$(this).attr('value',"搜索站内内容");
}
});
});
这样,页面就简洁多了,但是代码优化到这儿就完事了么,当页面存在大量需要自动隐藏显示提示符的输入框时,岂不是每个地方都要写上这么一坨代码,很自然,你会想到封装函数,但函数一定好用么?小剧向来喜欢把问题纠结到无法继续纠结下去的地步,所以就有了今天要提出的插件。
下面是插件源码,这里小剧把实现效果的整段代码的核心部分提取出来,简化封装为这一插件。
$.fn.autoKey=function(){
var searchBox = $(this);
var title=searchBox.val();
searchBox.click(function(){
if(searchBox.val()==title){
searchBox.val(");
}
}).blur(function(){
if(searchBox.val()==") {
searchBox.val(title);
}
});
return searchBox;
}
因为插件就几行代码,所以没必要单独引用一个文件,只要你正确引用了jquery文件,再把插件代码拷贝到你的js文件中里,然后就可以随意使用了。
//下面是插件源码
$.fn.autoKey=function(){
var searchBox = $(this);
var title=searchBox.val();
searchBox.click(function(){
if(searchBox.val()==title){
searchBox.val(");
}
}).blur(function(){
if(searchBox.val()==") {
searchBox.val(title);
}
});
return searchBox;
}
//上面是插件源码
//通用格式
$(你的选择器).autoKey();
//下面是示例
$('#username').autoKey();
$('.check').autoKey();
$('#username, .check').autoKey();
效果实现起来很简单,如果你的网页中需要自动提示输入信息效果的效果,欢迎下载源码学习使用。