여기 내 솔루션입니다. 내가 입력 태그 및 라벨 여기
<label class="label-inside" for="input1" id="input1_label" title="Enter input 1">Input 1</label>
<ul class="form-input">
<li>
<input type="text" id="input1" name="myInput1" value="" autocomplete="off" title="Enter Input 1" onblur="handleBlur(this, document.getElementById('input1_label'))"
onkeydown="handleFirstClick(event, this, document.getElementById('input1_label'))"
onkeyup="handleKey(this, document.getElementById('input1_label'))" />
</li>
</ul>
그리고 내 자바 스크립트
<script>
function handleBlur(input, label)
{
if (!input.value || input.value.length == 0)
{
label.style.display = 'block';
label.style.color = 'black';
label.clickedBefore = false;
}
}
function handleFirstClick(e, input, label)
{
if (!label.clickedBefore)
{
label.clickedBefore = true;
e.preventDefault();
label.style.color = 'red';
}
}
function handleKey(input, label)
{
console.log("handling key up : " + input.value.length);
label.style.display = 'none';
if (!input.value || input.value.length == 0)
{
label.style.display = 'block';
label.style.color = 'red';
}
}
</script>
다른 뭔가가 필요한 경우 알려줘되어 다음과 같은 추가했다.
EDIT : input_id에 따라 모든 처리기를 한꺼번에 추가하는 코드 추가.
window.onload = function(){
console.log("windows loaded");
var labels = {}
var all_labels = document.getElementsByTagName("label");
for (var i = 0; i < all_labels.length; i++)
{
labels[all_labels[i].getAttribute("for")] = all_labels[i];
}
function attachHandlers(input_id)
{
var input = document.getElementById(input_id);
var label = labels[input_id];
input.onclick = function(e){handleFirstClick(e, input, label)};
input.onkeyup = function(e){handleKey(input, label)};
input.onblur = function(e){handleBlur(input, label)};
}
var attachInput = ["input1"];
for (var j =0; j <attachInput.length; j++)
{
attachHandlers(attachInput[j]);
}
}
내가 여기 제안에 대한 [내 바이올린은] (http://jsfiddle.net/CnBeW/) –
을 디버깅 "빨간색"대신 .. 밝은 회색의 쉬운 사용! 나는 방금 당신의 JF에 접근하려고 시도했지만 작동하지 않는 것 같습니다. –
감사에 대한 링크가 – JaXL