5

के लिए एमडीएल के साथ क्रोम ऑटोफिल मैं वर्तमान में Google से एमडीएल (सामग्री डिजाइन लाइट) के साथ अपनी वेबसाइट पर काम कर रहा हूं और मुझे एक छोटी सी समस्या है।टाइप = "पासवर्ड"

enter image description here

आप देख सकते हैं, तारे अच्छा स्थान पर हैं लेकिन पासवर्ड यहाँ

मेरे कोड वास्तव में सरल है (वह कीबोर्ड पर किसी भी क्लिक या प्रेस के बाद बढ़ रहा है):

<div class="mdl-textfield mdl-js-textfield mdl-textfield--floating-label"> 
    <input class="mdl-textfield__input" type="text" name="mail"> 
    <label class="mdl-textfield__label">Adresse Email</label> 
</div> 
<div class="mdl-textfield mdl-js-textfield mdl-textfield--floating-label"> 
    <input id="test" class="mdl-textfield__input" type="password" name="password"> 
    <label class="mdl-textfield__label">Password</label> 
</div> 

कोड सामान्य और मूल है। समस्या है, एमडीएल में (यहां लिंक करें: https://www.getmdl.io/components/index.html#textfields-section) पासवर्ड प्रकार के लिए कुछ भी नहीं है, इसलिए मुझे हमेशा पहले से समस्या मिली है।

मैं अपने क्लाइंट के लिए क्रोम ऑटोफिल रखना चाहता हूं, इसलिए यह एक विकल्प नहीं है। क्या इस समस्या को बदलने का कोई तरीका है?

धन्यवाद!

+0

मुझे लगता है कि 'id = test' की आवश्यकता नहीं है। पहचानने के लिए जेएस के लिए 'name =' पर्याप्त है। 'Id' को हटाने से ऑटोफिल ठीक हो सकता है। –

+0

नहीं, यह कुछ भी नहीं बदला –

+0

दरअसल, आप क्या चाहते हैं? पासवर्ड बॉक्स में ऑटोफिल अक्षम करें या इसे सक्षम करें? –

उत्तर

4

एचटीएमएल

<div class="mdl-textfield mdl-js-textfield mdl-textfield--floating-label"> 
    <input class="mdl-textfield__input" type="password" id="password" required name="password"> 
    <label class="mdl-textfield__label" for="password"></label> 
</div> 

सीएसएस फिक्स

.mdl-textfield--floating-label input[type=password]:-webkit-autofill ~ label { 
    transform: translate3d(0, -20px, 0); 
    visibility: hidden; 
} 

.mdl-textfield--floating-label input[type=password]:-webkit-autofill ~ label:after { 
    content: 'Password'; 
    visibility: visible; 
    left: 0; 
    transform: translate3d(0, -20px, 0); 
    background: transparent; 
    color: inherit; 
} 

बदलें रंग और शायद पिक्सल आपकी आवश्यकताओं के अनुरूप ऑफसेट


JQuery समाधान है कि काम करता है जब प्रकार नहीं है " पासवर्ड "

$.each($('.mdl-textfield__input'), function() { 
    $(this).parent().get(0).MaterialTextfield.checkDirty(); 
    }); 

ऑटोफिल का पता चला है तो इनपुट क्षेत्र पर ध्यान केंद्रित करने के लिए एक और jquery वर्कअराउंड है। आप दोनों पाठ और पासवर्ड फ़ील्ड के लिए .ready

setTimeout(function() { 
    try { if ($('#password:-webkit-autofill').length > 0) $('#password').focus(); } 
    catch (error) { console.log(error); } 
    }, 25); 
+0

वाह! युक्तियों के लिए धन्यवाद: डी सही काम करता है! –

+0

हे @ निकोलस_लेबॉट मैंने http पढ़ने के बाद उत्तर अपडेट किया है: //stackoverflow.com/questions/32579980/mdl-jquery-label-overlaps-the-content-into-a-input-field –

0

अपने लेबल में for='id' का उपयोग करें?

<label class="mdl-textfield__label" for='test'>Password</label> 
+0

कुछ भी नहीं बदलता है =/ यह सिर्फ एक डिस्प्ले बग है लेकिन मुझे वास्तव में यह नहीं पता कि इसे कैसे हल किया जाए :( –

+0

एक अलग ब्राउज़र का उपयोग करने का प्रयास करें? –

+0

हम, वास्तव में फ़ायरफ़ॉक्स पर कोई समस्या नहीं है ... क्या यह ऑटोफिल से आ सकता है? मैं इसे स्पष्ट रूप से अक्षम नहीं करना चाहता हूं –

0

यह अच्छा नहीं है, यह साफ नहीं है लेकिन यह काम करता है। यह समाधान आईडी पर निर्भर करता है

$(document).ready(function() { 

    setTimeout(function(){ 
     $("#password").focus(); 
     componentHandler.upgradeDom(); 

     if($("#username").val().length === 0) { 
      $("#password").blur(); 
      componentHandler.upgradeDom(); 
     } 
    },100); 
}); 

आप पासवर्ड की लंबाई की जाँच करने के लिए प्रयास करें, तो यह हमेशा 0 ताकि आप के बजाय उपयोगकर्ता नाम क्षेत्र की लंबाई की जांच कर सकते हैं (यदि यह भरा हुआ है यह कर्सर के लिए एक खुशी होगी देना होगा यहां तक ​​कि अगर कोई पासवर्ड नहीं है)।

1
setTimeout(function() { 
    $.each($('.mdl-textfield'), function() { 
    var input = $(this).find("input"); 
    var len = input.val().length; 
    var type = input.attr("type"); 

    if (len > 0 || type == "password") 
     $(this).addClass("is-dirty"); 
    }); 
}, 100); 

वर्क्स इस अंदर $ (दस्तावेज़) रखना चाहिए। एक नकारात्मक बात यह है कि पासवर्ड फ़ील्ड हमेशा गंदे, खाली या नहीं के रूप में चिह्नित किए जाएंगे।

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