用JQ编写代替input框里面的placeholder效果

        写这篇文章是因为我有了这样的需求,我的需求就是UI设计的效果图是input框里面placeholder的文字颜色不一样,大家都知道,你可以更改placeholder文字的颜色与大小和输入的内容不一样,但是不能保证placeholder里面有不同样式的文字。我只能通过jq来写。

       他的原理就是将代替placeholder的文字定位到input框里面,然后采用的是keyup事件,就是当键盘抬起的时候,如果input里面的value值为空,那么定位的这段文字处于显示状态,如果不为空,则为隐藏。

$("#use_name").keyup(function(){

if(this.value !== ""){

$(".pos").css("display","none")

}else{

$(".pos").css("display","block")

}

})

        只是使用了keyup事件,没有用获取或者失去焦点事件,因为相当于不能即时获取input框里面的value值。


       下面说一下痛点:  

       那就是你定位上去的文字是在input之上的,这样就只能选择文字,而不能在input里面输入。有人的解决方案就是设置不同的层,z-index不一样,但是如果有其他层在的时候,比如轮播图,那就不好玩了。

        解决方案:

        当点击定位文字的时候,让input框获取焦点,这就ok。

$(".pos").click(function(){

$("#use_name").focus()

})

        整理代码如下:

<style>         ==>css

.div_ipt {

position: relative;

}

#use_name {

height: 30px;

line-height: 30px;

font-size: 18px;

width: 250px;

}

.pos {

position: absolute;

left: 0;

top: 0;

height: 30px;

line-height: 30px;

vertical-align: middle;

margin: 0;

}

</style>


<div class="div_ipt">    ==>html

<input type="text" id="use_name" />

<p class="pos">

<span style="color: #6f6f70;font-size: 16px;">

用户名/手机号/

</span>

</p>

</div>


<script src="http://code.jquery.com/jquery-latest.js"></script>      ==>js

<script>

$("#use_name").keyup(function() {

if(this.value !== "") {

$(".pos").css("display", "none")

} else {

$(".pos").css("display", "block")

}

})

$(".pos").click(function() {

$("#use_name").focus()

})

</script>

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. tab列表折叠效果 html: 能源系统事业部 岗位名称: 工作地点 岗位名...
    lilyping阅读 1,933评论 0 1
  • <a name='html'>HTML</a> Doctype作用?标准模式与兼容模式各有什么区别? (1)、<...
    clark124阅读 3,613评论 1 19
  • 人和人之间真的有磁场吗?有。特定的时间里很明显。 有的人的磁场波长相吸的幅度很宽,排异性较弱,所以他们可以接受各种...
    叫我老唐阅读 34,428评论 2 2
  • 第一次去他家,印象中是冬天的南方也如此和煦 那天阳光明媚,照着有树荫的小院子,有邻居来往走动 他坐在小板凳上刷自己...
    萱草生堂阶阅读 323评论 0 2
  • 老房子 一点都不老 墙壁还是白的 地板还是那样光滑 只有厨房的灶台上那些黑色的斑驳的痕迹 可以看出些年月 多少个一...
    初恋你阅读 379评论 0 4