zoukankan      html  css  js  c++  java
  • input 输入框获得/失去焦点时隐藏/显示文字

    这个标题可能比较拗口不好理解,但是我相信所有的人都见过这个效果,大家可以看本站右上角的搜索输入框,默认显示着“输入搜索内容”的提示,当这个 input 输入框获得焦点时,就自动清空等待用户输入,当用户啥也没输入就离开这个 input 输入框时,输入框内又再次显示“输入搜索内容”的提示。是不是很常见?很多搜索、登录、表单都会用到这个效果,但是我看了N多个网站,有90%以上是这么实现的:

    <input type= "text" value= "不推荐这么做" onfocus= "if(this.value == '不推荐这么做') this.value = ''" onblur= "if(this.value == '') this.value = '不推荐这么做'" />

    我是非常反对把 javascript 写在 html 标签里的,这和 style 写在 html 标签里一样,虽然不违反 W3C 标准,但也不推荐这么写。因为:

    1、完全没有复用性可言,如果是个表单,输入框很多,每个都需要这样的效果,那就每个都这么处理吗?

    2、如果要修改其中的提示文字,费时费力又不好维护。

    3、我们倡导结构(html)、表现(css)、行为(javascript)三者分离,这才是一个好的页面。

    那要怎么写才能实现这个效果,而且既有复用性,又好维护,又不需要把 js 写进 html 里呢?

    相信我们都有加载 jQuery,我就基于 jQuery 写了一个方法,先看 DEMO,具体方法如下:

    1、html 部分:

    <input type= "text" id= "input_test" value= "input 提示测试" />

    2、引入 jQuery:

    <script type= "text/javascript" src= "http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js" ></script>

    3、执行脚本:

    $( function() {
        var inputEl = $( '#input_test'),
            defVal = inputEl.val();
        inputEl.bind({
            focus: function() {
                var _this = $( this);
                if (_this.val() == defVal) {
                    _this.val( '');
                }
            },
            blur: function() {
                var _this = $( this);
                if (_this.val() == '') {
                    _this.val(defVal);
                }
            }
        });
    })

    实现的最终效果是一样一样的,或许是我个人的代码洁癖,但我相信,好代码从细节开始!

  • 相关阅读:
    今天的雪糕格外好吃!
    定了!对于本周四(7.16日)抽奖活动取消简要说明,新抽奖活动暂定下周三(7.22日)...
    你喜欢什么样的课堂?
    无题
    属于你们的“礼仪小课堂”
    红歌合唱之团结就是力量
    《此生未完成》痛句摘录(一)
    端午前夕的班级小游戏
    排序>插入排序 小强斋
    排序>交换排序 小强斋
  • 原文地址:https://www.cnblogs.com/javawebsoa/p/2995043.html
Copyright © 2011-2022 走看看