2013-10-01 23 views
24

Na mojej stronie przeznaczonej dla urządzeń mobilnych mam pole wejściowe, które jest używane do numerów PIN. Chcę, aby tekst był ukryty, gdy jest wprowadzany i chcę, aby klawiatura numeryczna pojawiła się, gdy użytkownik urządzenia mobilnego chce wprowadzić kod PIN. Klawiatura numerowa pojawia się, gdy Type = "Number", ale nie, gdy Type = "Password", a ja nie mogę (lub nie wiem jak) ustawić Type = "Number and Password".Wprowadź typ wejściowy = "Hasło" Użyj klawiatury numerycznej na urządzeniach mobilnych

Jakieś pomysły?

Z góry dziękuję!

+1

Możliwe, że będziesz musiał sfałszować pole hasła i samodzielnie wstawić gwiazdki do pola. – Brad

Odpowiedz

24

Niektóre przeglądarki (iOS) rozpoznają specyficzną wartość atrybutu pattern z [0-9]* jako wyzwalającą klawiaturę numeryczną.

HTML 5.1 projekt zawiera atrybut inputmode, który został zaprojektowany w celu rozwiązania konkretnego problemu trybu wejściowego (np klawiaturze) selekcji, ale nie zostało jeszcze zrealizowane.

Można go jednak użyć na przyszłość, mimo że obecny HTML 5.1 nie dopuszcza go dla type=password, z jakiegoś dziwnego powodu.

<input type="password" pattern="[0-9]*" inputmode="numeric"> 
+5

Próbowałem tego na iOS 8.2 i otrzymuję zwykłą alfabetyczną klawiaturę. Działa dokładnie zgodnie z oczekiwaniami, gdy 'type =" text "'; Dopiero gdy zmienię go na 'type =" password "' otrzymam alfabetyczną klawiaturę. –

+1

Tak, nie działa to "rozwiązanie" –

+0

Używanie Cordova, budynek target = android to nie działa. Nadal pokazuje klawiaturę numeryczną – Kentonbmax

23

Wreszcie znalazłem odpowiedź here:

input[type=number] { 
    -webkit-text-security: disc; 
} 

(działa tylko w przeglądarkach WebKit)

+1

To działało dla mnie (Safari, iOS 9.3.2).Niestety wprowadzone cyfry pojawiają się w lewym górnym rogu obszaru automatycznego podpowiedzi u góry klawiatury ekranowej, więc nadal są widoczne na ekranie (mimo, że są zamaskowane w samym polu wprowadzania danych). – GoBusto

+1

Po moim poprzednim komentarzu: Wygląda na to, że zmiana typu pola wejściowego z 'number' na' tel' zapobiega wyświetlaniu czegokolwiek w obszarze automatycznego sugerowania. W połączeniu z '-webkit-text-security: disc;' zapewnia to, że hasło w ogóle nie jest wyświetlane na ekranie. – GoBusto

+2

' ' – xinthose

0

lub można utworzyć własną klawiaturę z JavaScript i CSS, a gdy użytkownik wpisz liczbę, bisplay * i zapisz wartość w zmiennej javascript. Po prostu zrobiłem to i sprawia, że ​​logowanie użytkownika jest bardzo łatwe i proste ... Najpierw komórka

3

Proste sposoby, takie jak używanie "wzorca" i "trybu wejściowego" nie działają w systemie Android ani w systemie IOS, więc dodałem poniższe obejście za pomocą CSS i JavaScript.

https://jsfiddle.net/tarikelmallah/1ou62xub/

HTML

<div> 
    <input type="password" class="form-control ng-valid-minlength ng-valid-pattern ng-dirty ng-valid ng-valid-required" id="pass" name="pass" data-ng-minlength="4" maxlength="4" tabindex="-1"> 
    <input type="tel" class="form-control ng-valid-minlength ng-dirty ng-valid ng-valid-required" id="passReal" name="passReal" required="" data-ng-minlength="4" maxlength="4" data-display-error-onblur="" data-number-mask="telephone" 
     tabindex="5"> 
</div> 

JavaScript

$().ready(function(){ 
var xTriggered = 0; 
$("#passReal").keyup(function(event) { 
    $('#pass').val($('#passReal').val()); 
    console.log(event); 
}); 
$("#pass").focus(function() { 
    $('#passReal').focus(); 
}); 

    }); 

Styl:

input#passReal{ 
    width:1px; 
    height:10px; 
} 
input#pass { 
    position: absolute; 
left:0px; 
} 

to zdjęcie z Android emulatora:

enter image description here