最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

js兼容的placeholder屬性詳解

 更新時(shí)間:2013年08月18日 16:49:28   作者:  
這篇文章詳細(xì)介紹了js兼容的placeholder屬性,有需要的朋友可以參考一下

作為一個(gè).net后臺(tái)開發(fā)的程序猿,博客里既然大多都是前端相關(guān)的博文。是不是該考慮換方向了,轉(zhuǎn)前端開發(fā)得了 ...

小小吐槽一下,近期受該不該跳槽所困惑,我有選擇困難癥!

繼續(xù)前端,這次說一下輸入框 placeholder 這個(gè)屬性。

html5 的新屬性,就是在輸入框沒輸入值的時(shí)候,顯示的提示文字(自己的理解),例如:

貌似很好用,但也只能在支持 html 的瀏覽器版本中顯示,而對于不能支持的瀏覽器版本,讓我這種極力追求完美的開發(fā)者來說是很不舒服的一件事。

上網(wǎng)找了很多資料,有很多大牛人都已經(jīng)有了解決方案了,不過或多或少都有些缺陷,這里我做一個(gè)整合和修改:

(忘記看了多少別人的代碼了,也忘了地址是什么,在此對其他原作者說聲抱歉,若有版權(quán)問題請聯(lián)系我! -.-)

這種擴(kuò)展,在我看來就像是對瀏覽器界面功能做一次美容,而我始終堅(jiān)持,自然的才是最美的。所以在支持這種屬性的瀏覽器版本中,我就不多手再去做其他的修改了。

首先判斷是否已支持該屬性:

復(fù)制代碼 代碼如下:

if (!('placeholder' in document.createElement('input'))) { }

如果不支持,工作來了。

取出所有擁有 placeholder 屬性的 input:text / input:password / textarea,取出各自的 placeholder 屬性值,然后模仿功能,在每一個(gè)標(biāo)簽后加一個(gè) label 標(biāo)簽,用來顯示 placeholder 的值,當(dāng)輸入值時(shí),清空顯示的字符串,當(dāng)刪除輸入值時(shí),顯示字符串。

復(fù)制代碼 代碼如下:

var $element = $(this), placeholder = $element.attr('placeholder');

if (placeholder) {
    // 文本框ID
    var elementId = $element.attr('id');
    if (!elementId) {
        var now = new Date();
        elementId = 'lbl_placeholder' + now.getSeconds() + now.getMilliseconds();
        $element.attr('id', elementId);
    }

    // 添加label標(biāo)簽,用于顯示placeholder的值
    var $label = $('<label>', {
        html: $element.val() ? '' : placeholder,
        'for': elementId,
        css:
            {
                position: 'absolute',
                cursor: 'text',
                color: '#a9a9a9',
                fontSize: $element.css('fontSize'),
                fontFamily: $element.css('fontFamily')
            }
    }).insertAfter($element);

    // 綁定事件
    var _setPosition = function () {
        $label.css({ marginTop: GetStringNumValue($element.css('marginTop')) + 8 + 'px', marginLeft: '-' + (GetStringNumValue($element.css('width')) - 6) + 'px' });
    }
    var _resetPlaceholder = function () {
        if ($element.val()) { $label.html(null); }
        else {
            _setPosition();
            $label.html(placeholder);
        }
    }
    _setPosition();
    $element.on('focus blur input keyup propertychange resetplaceholder', _resetPlaceholder);

代碼很簡單,需注意的是:

1、label 的 margin-top / margin-left,因?yàn)槲覀兊捻?xiàng)目用了 bootstrap 框架,已設(shè)定了輸入框的內(nèi)間距為 "padding: 4px 6px;" 所以這里需縮進(jìn)對應(yīng)的像素值。

2、GetStringNumValue() 是我們自己定義的方法,使用正則表達(dá)式,用于把字符串中的數(shù)字提取,例如 "123px" 返回 123。

3、對于 IE 中不支持的版本,propertychange 真是一個(gè)好方法,完美的結(jié)合了!...

4、擴(kuò)展方法 resetplaceholder,用于使用 js 改變輸入框值時(shí)(賦值、清空),對 placeholder 進(jìn)行值的對應(yīng)設(shè)置。

效果:

——IE8

——IE9

相關(guān)文章

  • javascript實(shí)現(xiàn)任務(wù)欄消息提示的簡單實(shí)例

    javascript實(shí)現(xiàn)任務(wù)欄消息提示的簡單實(shí)例

    下面小編就為大家?guī)硪黄猨avascript實(shí)現(xiàn)任務(wù)欄消息提示的簡單實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-05-05
  • 淺析JavaScript事件和方法

    淺析JavaScript事件和方法

    本文通過示例向大家簡單分析了javascript的事件和方法,文章簡潔而不簡單,是篇非常不錯(cuò)的基礎(chǔ)文章,這里推薦給大家。
    2015-02-02
  • JavaScript NodeTree導(dǎo)航欄(菜單項(xiàng)JSON類型/自制)

    JavaScript NodeTree導(dǎo)航欄(菜單項(xiàng)JSON類型/自制)

    利用閑暇時(shí)間自己做了個(gè)JavaScript NodeTree,網(wǎng)上有很多類似的效果,本例主要是練練手,鞏固下知識(shí),感興趣的朋友可以了解下,或許對你學(xué)習(xí)NodeTree導(dǎo)航欄有所幫助,認(rèn)為好的就分享嘍
    2013-02-02
  • JavaScript中不可忽略的Symbol的盤點(diǎn)

    JavaScript中不可忽略的Symbol的盤點(diǎn)

    Symbol類型的出現(xiàn),為每個(gè)屬性賦予了獨(dú)一無二的標(biāo)識(shí)符,無論項(xiàng)目多么復(fù)雜,Symbol都能確保屬性鍵的絕對唯一性,下面我們就來看看JavaScript中那些不可忽略的Symbol吧
    2024-12-12
  • JavaScript中遍歷對象的property的3種方法介紹

    JavaScript中遍歷對象的property的3種方法介紹

    這篇文章主要介紹了JavaScript中遍歷對象的property的3種方法介紹,本文先是講解了3種方法并用一張圖片加深理解,然后給出代碼實(shí)例,需要的朋友可以參考下
    2014-12-12
  • js獲取元素的偏移量offset簡單方法(必看)

    js獲取元素的偏移量offset簡單方法(必看)

    下面小編就為大家?guī)硪黄猨s獲取元素的偏移量offset簡單方法(必看)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-07-07
  • 微信小程序?qū)崿F(xiàn)手寫簽名功能

    微信小程序?qū)崿F(xiàn)手寫簽名功能

    微信小程序?qū)崿F(xiàn)手寫簽名功能的步驟詳解,包括技術(shù)選型、實(shí)現(xiàn)步驟、優(yōu)化與拓展以及常見問題解答,感興趣的朋友跟隨小編一起看看吧
    2025-01-01
  • JavaScript實(shí)現(xiàn)無阻塞加載的常用方式

    JavaScript實(shí)現(xiàn)無阻塞加載的常用方式

    在 JavaScript 中,無阻塞加載(Non-blocking Loading)是優(yōu)化網(wǎng)頁性能的關(guān)鍵技術(shù),通過避免腳本阻塞頁面渲染和其他資源的加載,提升用戶體驗(yàn),以下是實(shí)現(xiàn)無阻塞加載的常用方法及示例,需要的朋友可以參考下
    2025-03-03
  • JavaScript實(shí)現(xiàn)頁面跳轉(zhuǎn)的八種方式

    JavaScript實(shí)現(xiàn)頁面跳轉(zhuǎn)的八種方式

    這篇文章介紹了JavaScript實(shí)現(xiàn)頁面跳轉(zhuǎn)的八種方式,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-06-06
  • javascript 函數(shù)式編程

    javascript 函數(shù)式編程

    javascript 函數(shù)式編程...
    2007-08-08

最新評論

黄浦区| 新野县| 云梦县| 利辛县| 珠海市| 达孜县| 布拖县| 云阳县| 沙田区| 三都| 陵川县| 浏阳市| 正安县| 喀什市| 钦州市| 苍山县| 辉南县| 中西区| 资阳市| 威远县| 青浦区| 乌恰县| 东阳市| 英吉沙县| 台中市| 和平县| 九台市| 宜宾市| 长顺县| 安平县| 封丘县| 聂拉木县| 渝北区| 苏州市| 长顺县| 合阳县| 仙游县| 南川市| 盐津县| 彰化市| 南陵县|