国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

javascript 文本框水印/占位符(watermark/placeholder)實現方法

2024-05-06 14:22:38
字體:
來源:轉載
供稿:網友
Firefox/Chrome/Opera從某一版本開始已經支持這一特性,但ie系列即使是ie9也還不支持,所以需要通過javascript來兼容這些不支持placeholder特性的瀏覽器。

普遍的做法
現在普遍使用的做法是通過表單元素的onfocus/onblur事件來改變value值,如下:
代碼如下:
<input type="text" id="text1" />
<script>
var el = document.getElementById("text1");
if (el.value == "")
el.value = "提示信息";

el.onfocus = function() {
if (this.value == "提示信息")
this.value = "";
};
el.onblur = function() {
if (this.value == "")
this.value = "提示信息";
}
</script>

jQuery的各個watermark插件(http://archive.plugins.jquery.com/plugin-tags/watermark)大都是采用這種做法,可能還會有設置一些樣式等操作。

這種做法直接操作表單元素,方便快捷,比較實用。

但它也有弊端:

有些操作同樣需要通過監聽表單元素的value值來實現功能,比如:autocomplete、驗證等
表單提交時需要清空它的值
當然可能還有其他弊端,這里不再列舉。

更好的做法
為了避免引起不必要的麻煩,就要避免去改變表單元素的value值。

首先,假如有如下一個文本框:
代碼如下: <input type="text" />

既然不能改變文本框的值,那么只能通過添加一個span或其他元素,并通過絕對定位放置到文本框之上,并在外框加一個position:relative的容器來包裝它們以保證提示信息不會產生偏移,如:
代碼如下:
<span style="position:relative;">
<span style="position:absolute;">提示信息</span>
<input type="text" />
</span>




無意中發現淘寶的登錄頁面并不需要額外加一層position:relative的容器來包裝也不會產生偏移,所以僅需要把提示信息的標記放在文本框之前即可,如下:
代碼如下:
<span style="position:absolute;">提示信息</span>
<input type="text" />

這樣子產生的標記更加簡潔。
相應的樣式
既然最終呈現的標記已經確定,那么現在就需要定義相應的樣式,來使它看起來更美觀,如下:
代碼如下:
/* 標記的主要樣式 style */
.w-label {
position: absolute;
padding: 0 0 0 6px;
margin: 0;
font-size: .8em;
color: #999;
opacity: 1;
}
/* 隱藏標記 */
.w-hide {
visibility: hidden;
opacity: 0;
}
/* 表單元素獲得焦點時,標記的顏色 */
.w-active {
color: #ddd;
}

那么html就相應的變成:
代碼如下:
<span class="w-label">提示信息</span>
<input type="text" />

相關的腳本
雖然不需要去改變表單元素的value值來實現效果,但還是需要通過onfocus/onblur事件來控制提示信息的標記,全部實現如下:
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 巴楚县| 左云县| 茶陵县| 万安县| 会东县| 巴林左旗| 闸北区| 延庆县| 新兴县| 醴陵市| 万山特区| 河曲县| 哈尔滨市| 郎溪县| 肃宁县| 蛟河市| 伊金霍洛旗| 扎囊县| 施秉县| 太和县| 育儿| 四川省| 孝义市| 资兴市| 福清市| 景宁| 武汉市| 罗江县| 确山县| 双柏县| 成安县| 西城区| 泸定县| 武穴市| 泗水县| 石林| 临邑县| 辽阳县| 定结县| 古丈县| 兰州市|