Я пытаюсь использовать элементы <label>
в моей контактной форме html, такие как атрибут-заполнитель HTML5 для ввода. Я написал следующий JavaScript, чтобы действовать как многоразовая функция, которая обеспечит следующие функции.
- Найдите вход по имени.
- Получите значение ввода.
- Найдите метку, принадлежащую входу.
- Измените стиль метки в зависимости от состояния ввода.
- Измените стиль метки в зависимости от значения ввода.
Однако он не работает, и я не знаю, почему в консоли не появляются ошибки. Что я делаю не так? вот JS Fiddle с кодом
function placeholder(field_name) {
// Get the input box with field_name
// Then get input value
var box = document.getElementsByName(field_name);
var i;
for (i = 0; i < box.length; i++) {
var value = document.getElementById(box[i].value);
}
// Get the labels belonging to each box using the HTML for attribute
var labels = document.getElementsByTagName('LABEL');
for (i = 0; i < labels.length; i++) {
if (labels[i].htmlFor !== '') {
var elem = document.getElementById(labels[i].htmlFor);
if (elem) {
box.label = labels[i];
}
}
}
// Colors
var focusColor = "#D5D5D5";
var blurColor = "#B3B3B3";
// If no text is in the box then show the label grey color
box.onblur = function () {
box.label.style.color = blurColor;
};
// If input focuses change label color to light grey
box.onfocus = function () {
box.label.style.color = focusColor;
};
// If there is text in the box then hide the label
if (box.value !== "") {
// Quick do something, hide!
box.label.style.color = "transparent";
}
}
// Call the function passing field names as parameters
placeholder(document.getElementsByName("email"));
placeholder(document.getElementsByName("firstName"));
placeholder(document.getElementsByName("lastName"));
label
иplaceholders
? - person Mr. Alien   schedule 26.02.2013var box = document.getElementsByName(field_name);
-box
- это NodeList.if (elem) box.label = labels[i];
Установка нового свойства label в NodeList. Кроме того,var
внутри циклов меня огорчает. - person Paul S.   schedule 26.02.2013placeholder(document.getElementsByName("email"));
- person Mr. Alien   schedule 26.02.2013<label>
наvisibility: hidden;
, если значение элемента, на который ссылается его for, не равно""
при вызовеplaceholder
. - person Paul S.   schedule 26.02.2013