2013-06-05 59 views
20

事業部不具有佔位符屬性如何爲DIV創建像textfield一樣的「佔位符」?

<div id="editable" contentEditable="true"></div> 

我想<Please your enter your Name>在DIV顯示當用戶退格鍵,整個文本的DIV,或裏面沒有文字,我該怎麼辦呢?

+0

你能解釋更多關於如何能用戶 '退格一個div'? –

+0

對不起我的錯,忘了編碼吧 – user2399158

+0

在這種情況下javascript會成爲你的朋友! – Pete

回答

-2

在HTML

<div id="editable" contenteditable="true"> 
    <p>Please your enter your Name</p> 
</div> 

在JavaScript

jQuery.fn.selectText = function(){ 
    var doc = document; 
    var element = this[0]; 
    console.log(this, element); 
    if (doc.body.createTextRange) { 
     var range = document.body.createTextRange(); 
     range.moveToElementText(element); 
     range.select(); 
    } else if (window.getSelection) { 
     var selection = window.getSelection();   
     var range = document.createRange(); 
     range.selectNodeContents(element); 
     selection.removeAllRanges(); 
     selection.addRange(range); 
    } 
}; 

$("#editable").click(function() { 
    $("#editable").selectText(); 
}); 

jsFiddle

60

這裏是一個純CSS唯一的解決辦法: -

<div contentEditable=true data-ph="My Placeholder String"></div> 
<style> 
    [contentEditable=true]:empty:not(:focus):before{ 
     content:attr(data-ph) 
    } 
</style> 

在這裏,我們基本選擇所有contentEditable<divs>是空&模糊。然後,我們在CSS選擇(可編輯div)之前創建一個僞元素,並修復佔位符文本(指定data-ph屬性)作爲其內容。

如果你是針對舊學校CSS2的瀏覽器,改變data-ph所有出現title
修正.......的:empty選擇不在IE版本8和更早版本支持。

+0

Thans男人,我從來沒有想過你可以用純CSS做這樣的事情。真棒! – dav

+0

Unconstructive評論:這是美麗的!做得好! – bjornl

+0

即使元素被聚焦,如何保留佔位符?沒有(:焦點)選擇器,插入符號消失或出現在錯誤的地方。 – boh

6

你可以試試這個!

HTML:

<div contentEditable=true data-text="Enter name here"></div> 

CSS:

[contentEditable=true]:empty:not(:focus):before{ 
content:attr(data-text) } 

check it out (demo)

相關問題