2010-02-19 29 views
5

मैं जावास्क्रिप्ट में नया हूं। मैं अपने एचटीएमएल पेज पर सभी इनपुट प्रकार पासवर्ड प्राप्त करना चाहता हूं।सभी इनपुट प्रकार पासवर्ड प्राप्त करें

मुझे पता है कि जावास्क्रिप्ट का उपयोग करके इस तरह की चीजों को करने का एक तरीका है, लेकिन मुझे नहीं पता कि कैसे।

फिर, प्रत्येक के साथ, मैं पाठ पर एक ईवेंट को असाइन करना चाहता हूं।

मैं यह कैसे कर सकता हूं?

धन्यवाद

+0

"पासवर्ड इनपुट प्रकार" से आपका क्या मतलब है? – Gumbo

+1

<इनपुट प्रकार = "पासवर्ड" नाम = "passwd"> – rpf

उत्तर

11

मुझे लगता है तुम्हारा मतलब

<input type="password"> 

यदि हां, तो आप इस तरह एक समारोह की कोशिश कर सकते हैं:

function getPwdInputs() { 
    var ary = []; 
    var inputs = document.getElementsByTagName("input"); 
    for (var i=0; i<inputs.length; i++) { 
    if (inputs[i].type.toLowerCase() === "password") { 
     ary.push(inputs[i]); 
    } 
    } 
    return ary; 
} 
+2

+1 === का उपयोग करने के लिए +1। –

+4

@ मार्सल कोर्पेल इस मामले में क्या अंतर करता है? यदि इनपुट [i] .type' शून्य है तो यह पहले से ही एक अपवाद फेंक दिया होगा, और यदि यह स्ट्रिंग नहीं है तो 'toLowerCase' मौजूद नहीं होगा, अपवाद फेंक देगा। यदि इनपुट [i] .type' एक स्ट्रिंग है तो 'toLowerCase' हमेशा एक स्ट्रिंग लौटाएगा। – Nicole

+0

मुझे आशा है कि आपको कोई फर्क नहीं पड़ता है, मैंने आपके प्रश्न को 'querySelectorAll' का उपयोग करने के लिए विस्तारित किया है, तो यह मुझे अपने लिखने से मूल्यवान सेकंड बचाता है :-) –

0

यह untested है, लेकिन कुछ इस तरह काम करना चाहिए:

var allElem = document.getElementsByTagName(’input’) 

for (i=0; i < allElem.length; i++) { 

      if (allElem[i].getAttribute(’type’)==‘password’) { 

       allElem[i].onchange = //<your onchange function> 
      }  
} 
3

वाई कहां आसानी से jQuery का उपयोग कर ऐसा कर सकते हैं:

jQuery("input[type='password']").change(function() { 
    // check input ($(this).val()) for validity here 
}); 
+3

ओपी को: यदि आपको jQuery का उपयोग करने में कोई फर्क नहीं पड़ता है, तो यह समाधान आपके लिए सबसे अच्छा विकल्प होगा, क्योंकि इसमें अंतर्निहित ईवेंट हैंडलिंग है जो ऑब्जेक्ट पर पहले से ही घटनाओं को रोक नहीं पाएगी। यदि आप बस '.change' सेट करते हैं, तो आप मौजूदा ईवेंट हैंडलर तोड़ते हैं, और यदि आप इसके आसपास काम करना चाहते हैं, तो आपको मूल ईवेंट हैंडलर को स्टोर करने के लिए अपना स्वयं का तरीका लागू करना होगा (परिणामस्वरूप बदसूरत कोड जब तक आपके पास पहले से सिस्टम नहीं है इसके लिए)। – Nicole

1

jQuery अपने दोस्त यहाँ है।

$('input[type=password]'); 

और उसके बाद प्रत्येक के लिए एक changed श्रोता बाध्यकारी:

$('input[type=password]').change(function() 
{ 
    // do whatever here 
}); 
4

मुझे आशा है कि Robusto मुझे मन नहीं करता है उसके समाधान के समाधान के लिए एक सा विस्तार jQuery के साथ, यह चयनकर्ता का उपयोग करके जितना आसान है जो आधुनिक ब्राउज़रों पर बेहतर प्रदर्शन करेगा। क्रोम, सफारी, आईई 8 और फ़ायरफ़ॉक्स सभी querySelectorAll का समर्थन करते हैं, इसलिए यह उपलब्ध होने के लिए अधिक उपयुक्त लगता है।

function getPwdInputs() 
{ 
    // If querySelectorAll is supported, just use that! 
    if (document.querySelectorAll) 
    return document.querySelectorAll("input[type='password']"); 

    // If not, use Robusto's solution 
    var ary = []; 
    var inputs = document.getElementsByTagName("input"); 
    for (var i=0; i<inputs.length; i++) { 
    if (inputs[i].type.toLowerCase() === "password") { 
     ary.push(inputs[i]); 
    } 
    } 
    return ary; 
} 

एनबी। यह कोई समस्या नहीं होनी चाहिए लेकिन यह ध्यान देने योग्य हो सकता है कि querySelectorAll एक संग्रह वापस कर देगा, जबकि फ़ॉलबैक विधि एक सरणी वापस कर देगी। अभी भी एक बड़ा सौदा नहीं है, दोनों में length संपत्ति है और वहां सदस्यों को उसी तरह से एक्सेस किया जाता है।

+1

नहीं, मुझे सभी एंडी पर कोई फर्क नहीं पड़ता। कोई भी सुधार हमेशा स्वागत है।जहां मैं काम करता हूं हमें अभी भी आईई 6 का समर्थन करना है, इसलिए मैं सबसे कम-आम-संप्रदाय कोडिंग आदतों में पड़ता हूं। लेकिन आप सही हैं, document.querySelectorAll, यदि उपलब्ध हो, तो अधिक किफायती है। – Robusto

संबंधित मुद्दे