2009-09-05 20 views
7

Giriş, biri şifre için olmak üzere iki giriş alanından oluşan normal bir giriş formum var. Şu anda girilen şifreyi düz metin olarak gösterecek bir kontrol eklemeye çalışıyorum, bu yüzden kullanıcı yazım hataları için kontrol edebilir."Metni metin olarak göster" denetimi

sorun tarayıcıları (en azından Firefox) giriş alanlarının type özelliğinin dinamik değişimini izin vermez, bu yüzden sadece type="text" için type="password" değiştiremezsiniz olmasıdır. Başka bir sorun, tarayıcıların şifre alanı değerini almasına izin vermemesidir, bu yüzden yeni bir input type="text" oluşturamıyorum ve değerini parolanın bir bölümüne ayarlayamıyorum. Bu görev için this one da dahil olmak üzere birkaç farklı yaklaşım gördüm, ancak yalnızca parola yazıldığında ve tarayıcı parolayı otomatik olarak doldururken başarısız oluyorlar.

Bunu yapmak için önerileriniz kabul edilir. JQuery kullanıyorum.

cevap

25

:

<input type="password" id="password"> 
<input type="checkbox" onchange="document.getElementById('password').type = this.checked ? 'text' : 'password'"> Show password 
+0

Çalışıyor! Inanılmaz. Sorun benim jQuery içinde kullanmaktayım gibi görünüyor. Bir sebepten dolayı bu hile yapmama izin vermedi. – n1313

+4

Bu büyük olasılıkla IE –

+4

daha doğru çalışmıyor. IE'de hiç işe yaramadığını doğruladım. – Guffa

1

Ben, bunu aşağıdaki nedenlerle, metinde şifreyi göstermek için harika bir fikir olduğunu sanmıyorum olabilir: kullanıcıya kafa karıştırıcı olacak böylece, Yaygın bitmedi

  1. Bu sadece, kullanıcılar yazım hatalarını önlemeye yardımcı şifre devre dışı bırakılmadan önce onlara daha fazla şans vermek istiyorsanız, şifrenizi

ben de düşünüyorum over-the-omuz görüntüleme açıktır demektir. Çoğu sitenin uyguladığı tipik "3" ünün gerçekten gerekli olmadığını düşünüyorum, "10" denemelerini öneririm, ya da belki "5", gerçekten muhafazakar olmak istiyorsanız, oldukça kabul edilebilir. Sadece onlar için geri sayın ve kendi yazım hatalarını çözmelerine izin verin.

Sadece benim düşünceme göre. Böyle bir şey yapabiliriz

+0

Varsayılan olarak şifre elbette gizli. Eğer kullanıcı "Bu şifre alanına yazdığım mektupları bana doğru yazdığına emin olmadığım için bana göster" linkini tıklarsa, ne yaptıklarını anlaması ve ne olacağını anlayabilmesi olasılığı yüksektir: – n1313

+0

Yine de, bana yanlış geliyor. Her biri kendi başına olsa da. –

+2

TrueCrypt ve parola güvenliği gibi güvenliğin çok önemli olduğu programlar bile, parolanın gösterilmesini sağlayan özelliklere sahiptir. Especailly, kullanıcının çok uzun veya karmaşık bir şifre/parola kullanabileceği durumlarda, şifreyi görebilmek çok iyi bir özellik olabilir. N1313 ile, şifreyi göstermek için üzerine tıklayan kişinin omuz sörfçülerini kontrol etmesi gerektiğine katılıyorum. – Kibbee

1

Bunu kendim hiç denemedim ama sadece elemanın değeri özelliğini erişemiyorum? Eğer ... Böyle bir şey varsa

<input id="pw" name="pw" type="password" /> 

Sonra JavaScript/jQuery ...

var pass = document.getElementById('pw').value; 

$('pw').val() 
+0

Bakın: http://www.w3schools.com/htmldom/dom_obj_password.asp – Fraser

+0

Bekleyin, ne. Soruyu göndermeden önce bunu denediğime emindim ve işe yaramadı, ama şimdi öyle. O NE LAN. Daha fazla kontrol gerekiyor! – n1313

+0

@Fraser w3schools bağlantınızın bozuk olduğu görülüyor. – fedorqui

0

güvenlik nedeniyle Otomatik Doldurulan şifreyi göstermek için herhangi bir olasılık yoktur. Mümkünse, bu sayfa için şifrenizi bilgisayarınızda görebilirsiniz.

Sen komple çözüm için aşağıdaki uğraşmak zorunda: - o zaman

  • otomatik tamamlama açıldığında şifre onay kutusunu seçmek göstermek olmamalıdır - JavaScript izin verilmez

    • yazdığım gibi, sen Bu şekilde doldurulmuş şifre gösterilemiyor. Eaighter otomatik tamamlamayı kapatır veya kullanıcı parolasını yeniden yazana kadar show parolasını gizler.

    Otomatik Tamamlama girişi bulacaksınız böyle http://www.cuptech.eu/jquery-plugins/

  • 0
    $('.show-password').change(function() { 
        if ($("#form-fields_show-password").attr('checked')) { 
        var showValue = $('#form-fields_password').val(); 
        var showPassword = $('<input type="text" size="50" required="required" name="form- fields[password]" id="form-fields_password" class="password required" value="'+showValue+'">'); 
        $('#form-fields_password').replaceWith(showPassword); 
        } else { 
        var hideValue = $('#form-fields_password').val(); 
        var hidePassword = $('<input type="password" size="50" required="required" name="form-fields[password]" id="form-fields_password" class="password required" value="'+hideValue+'">'); 
        $('#form-fields_password').replaceWith(hidePassword); 
        } 
    }); 
    

    Something kullanılabilir aşağıdaki jquery-ShowPassword eklentisi kullanabilirsiniz anında onay kutusunu eklemek için bu jQuery

    $('input').attr('autocomplete', 'off'); 
    

    tarafından kapatmak alanı ve değeri showValue adlı bir değişkende saklayın. Ardından, type = "password" ile, new html ile type = "text" öğesinin yerini alabilir ve onay kutusu işaretli değilse, değer, şifre türü alanına düşecektir.

    Bu yöntemde, parola türü değeri kodda görünecektir, ancak bunu elde etmek için her zaman değer özniteliğini parola türünden kaldırabilir ve yalnızca kullanıcıyı yeniden yazmaya zorlayabilirsiniz. Eğer uygulamasında bununla yaşayabilirsen.

    0
    function change(){ 
    id.type="password"; 
    } 
    
    
    <input type="text" value="123456" id="change"> 
    <button onclick="pass()">Change to pass</button> 
    <button onclick="text()">Change to text</button> 
    <script>function pass(){document.getElementById('change').type="password";} function text(){document.getElementById('change').type="text"; } </script> 
    
    +0

    Bunun nasıl çalıştığını açıklayabilir misiniz? – rayryeng

    +0

    Bu nasıl bir açıklama sağlıyor? – rayryeng

    -1
    Password: <input type="password" value="" id="myInput"><br><br> 
    <input type="checkbox" onclick="myFunction()">Show Password 
    
    <script> 
    function myFunction() { 
        var x = document.getElementById("myInput"); 
        if (x.type === "password") { 
         x.type = "text"; 
        } else { 
         x.type = "password"; 
        } 
    } 
    </script> 
    
    İlgili konular