2015-03-31 8 views
-1

Я хочу знать, как создать несколько onfocus и onblur для нескольких полей ввода.как вы можете создавать несколько фокусов и onblur?

У меня есть что-то вроде этого, но когда поле имени onfocus, поле электронной почты равно onfocus. Есть ли способ решить это?

$(document).ready(function(){ 
    focusBlur(); 
}); 


function focusBlur() { 

    var formName = document.getElementById('name'); 
    var valueName = 'name'; 

    var formEmail = document.getElementById('email'); 
    var valueEmail = 'email'; 

    formName.onfocus = function() { 
     if(formName.value == valueName) { 
      formName.value = ''; 
     } 

     if(formEmail.value == valueEmail) { 
      formEmail.value = ''; 
     } 
    }; 


    formName.onblur = function() { 
     if(formName.value == '') { 
      formName.value = valueName; 
     } 

     if(formEmail.value == '') { 
      formEmail.value = valueEmail; 
     } 
    }; 


} 
+0

, если вы уже используете jQuery, почему бы не использовать его полностью? – cr0ss

+0

вы можете прикрепить класс ко всем из них и просто пойти '$ (ваша форма) .on ('mouseover', '.anyclass', function() {// сделать что-то}' – cr0ss

+0

Я хочу попрактиковаться в javascript .. – user2916693

ответ

0

Если вы где сделать что-то вроде JQuery делает, можно сказать, что-то вроде

function blur(){} 
    var elems=Array.prototype.slice.call(document.getElementsByTagName('input')) 
elems.forEach(function(element){ 

    if(document.addEventListener){ 
     element.addEventListener('blur',blur) 
    } 
    else if(element.onblur){ 
     element.onblur=blur; 
    } 
}) 

что-то подобное, что должны это сделать. в зависимости от поддержки браузера вы можете использовать getElementsByClassName или querySelector, который вернет массив узлов и цикл через него, чтобы прикрепить события

+0

Это неправильно на нескольких уровнях. Старые свойства «on *» в значительной степени поддерживаются повсеместно, они не так гибки, как современная версия addEventListener. 'getElementsByTagName' и другие методы DOM возвратят HTMLCollection, который, к сожалению, не реализует методы Array, такие как forEach. – Touffy

+0

Вы правы, у меня было неправильное применение методов вложения, так как для коллекции это был надзор, простое преобразование массива решило бы проблему. Спасибо за указатели –