2015-03-31 35 views
-1

我想知道如何爲多個輸入字段創建多個onfocusonblur你如何在焦點和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,爲什麼不一直使用它? (你的表單).on('mouseover','.anyclass',function(){//做點什麼}' – cr0ss 2015-03-31 19:51:18

+0

)你可以附加一個類給他們, jQuery有自己的包裝事件監聽器的方式,它不能與香草互通。不要混合使用 – cr0ss 2015-03-31 19:53:06

+0

我想練習javascript .. – user2916693 2015-03-31 19:53:27

回答

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,不幸的是它沒有實現像forEach這樣的Array方法。 – Touffy 2015-04-03 00:12:05

+0

你是對的,我在附件方法上錯了,至於收集它是一個疏忽,一個簡單的數組轉換就可以解決問題。感謝指針 – 2015-04-03 16:12:50

相關問題