2013-12-02 3 views
0

Эй, я работаю над калькулятором с формой и javascript. Я хочу, чтобы, когда пользователь нажимает в поле, а значение равно «0», поле очищается. Когда он нажмет вне поля, а значение «» Я хочу, чтобы поле было заполнено снова 0. Я могу легко сделать это для конкретных областей, как, что:поля прозрачной формы onblur на всех полях

document.forms[0].elements[0].onfocus = function() { 
    if(this.value == "0") { 
     this.value = ""; 
    } 
}; 

document.forms[0].elements[0].onblur = function() { 
    if(this.value == "") { 
     this.value = "0"; 
    } 
}; 

Но я хочу, чтобы работать с каждым полем и я не хочу писать эту кучу кода для каждого поля, и я не хочу использовать встроенные ссылки в своем html. Какой у меня вариант? Заранее спасибо.

ответ

0

Попробуйте это.

Вы также можете заменить 'document.forms [0] .elements' на 'document.querySelectorAll ("форма входа")' и т.д.

Array.prototype.slice.call(document.forms[0].elements).forEach(function(element){ 
    element.onfocus = function() { 
     if(this.value == "0") { 
      this.value = ""; 
     } 
    }; 
    element.onblur = function() { 
     if(this.value == "") { 
      this.value = "0"; 
     } 
    }; 
}) 
+0

Вау спасибо! Я действительно не понимаю, что это значит, но он отлично работает! Еще раз спасибо за быструю помощь! – ardox

+0

Позвольте мне подробнее пояснить: Array.prototype.slice.call (document.forms [0] .elements) преобразует объект HTMLCollection, возвращенный document.forms [0] .elements в форму массива. Затем .forEach фактически выполняет функцию цикла. –

+0

Спасибо! Я очень ценю это, поскольку я новичок в JS, и я пытаюсь понять, что я делаю. – ardox

Смежные вопросы