Моя задача - удалить Placeholder из поля ввода, когда пользователь нажимает на него, и сделать метку видимой. Если пользователь ничего не заполняет, снова верните заполнитель и сделайте метку невидимой.
Я могу скрыть его, но не могу переназначить. Я пробовал element.setAttribute(attribute,value) , element.attribute=value & element.[attribute]=value type, но не работает.
Я сохранил значения по умолчанию visibility
из <label>
"hidden"
Я создал функции hide() и show() для задачи с двумя параметрами, а именно.
- идентификатор поля ввода
- идентификатор ярлыка
Код JavaScript:
var placehlder;
function hide(input_id,lbl){
var e1=document.getElementById(input_id);
placehlder=e1.getAttribute('placeholder');
/*document.write(placehlder);*/
e1.placeholder="";
var e2=document.getElementById(lbl);
e2.style.visibility="visible";
}
function show(input_id,lbl){
var e1=window.document.getElementById(input_id).value;
var e2=document.getElementById(lbl);
/*document.write(placehlder);*/
if (e1.length ==0)
{
e2.style.visibility="hidden";
e1.placeholder=placehlder;
/*e1.setAttribute('placeholder',placehlder);*/
/*e1['placeholder']=placehlder;*/
}
}
Код HTML:
<form>
<label id="first" >First Name</label><br/>
<input id="box" type="text" placeholder="First Name" onclick="hide(id,'first')" onfocusout="show(id,'first')"/>
</form>
Полный код: HTML + CSS + JAVASCRIPT:
var placehlder;
function hide(input_id,lbl){
var e1=document.getElementById(input_id);
placehlder=e1.getAttribute('placeholder');
/*document.write(placehlder);*/
e1.placeholder="";
var e2=document.getElementById(lbl);
e2.style.visibility="visible";
}
function show(input_id,lbl){
var e1=window.document.getElementById(input_id).value;
var e2=document.getElementById(lbl);
/*document.write(placehlder);*/
if (e1.length ==0)
{
e2.style.visibility="hidden";
e1.placeholder=placehlder;
/*e1.setAttribute('placeholder',placehlder);*/
/*e1['placeholder']=placehlder;*/
}
}
#first{
visibility: hidden;
}
#box{
}
<!doctype html>
<html>
<head>
<meta charset="utf-8"/>
<title>
Functions
</title>
</head>
<body>
<form>
<label id="first" >First Name</label><br/>
<input id="box" type="text" placeholder="First Name" onclick="hide(id,'first')" onfocusout="show(id,'first')"/>
</form>
</body>
</html>
РЕДАКТИРОВАТЬ 1: у меня есть решение моей проблемы с использованием CSS в ответ @Darlesson. Но если возможно, скажите, что не так в моем коде. РЕДАКТИРОВАТЬ 2: Как указал @lenilsondc, мой код не работал, потому что var e1
не было элемента, а value attribute
элемента.
var e1=window.document.getElementById(input_id).value;
заменен на
var e1=window.document.getElementById(input_id);
работал с e1.placeholder=placehlder;