欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

如何用CSS創建一個iOS風格的PIN/密碼框?

錢諍諍2年前8瀏覽0評論

我想創建一個html5輸入,看起來像iOS輸入引腳(在鎖定屏幕上)....有4個輸入框。

我如何實現這一點?

enter image description here

我嘗試了以下方法:

1)創建了一個普通的輸入框。

2)移除其邊框。

3)放置上圖作為輸入框的背景。

4)并增加了一些字母間距。

問題是:當我鍵入前3個字符時,它適合這些框:

enter image description here

但是當我輸入第四個字符時,這些字符向左移動,因此顯示如下:

enter image description here

我能做什么來解決這個問題?

有其他更好的方法嗎??

編輯:

好的,基于下面的回答,我修改了方法,增加了4個輸入框。對于每個輸入框的keyup事件,我將焦點轉移到下一個輸入框。

這在瀏覽器上運行良好。但是在設備(iPhone 5)上不工作。有什么問題?

這是一個使用Cordova打包的Sencha Touch應用程序。

已解決:

需要禁用& ltpreference name = " keyboard display requires user action " value = " false "/& gt;

代替圖像,有4個輸入框。小提琴在這里:http://jsfiddle.net/JLyn9/2/

<input type="password" maxlength=1 id="1" onkeyup="moveOnMax(this,'a')" />
<input type="password" maxlength=1 id="a" onkeyup="moveOnMax(this,'b')" />
<input type="password" maxlength=1 id="b" onkeyup="moveOnMax(this,'c')" />
<input type="password" maxlength=1 id="c" />

moveOnMax =function (field, nextFieldID) {
    if (field.value.length == 1) {
        document.getElementById(nextFieldID).focus();
    }
}

PS JS函數可以優化。

編輯/警告:這不是解決這個問題的方法。請看其他答案

為了這個目,不要使用背景圖像,使用四個類型設置為密碼的輸入框,然后使用jQuery來實現更好的用戶友好性,如果您不需要自動聚焦到下一個字段的功能,您可以簡單地省略腳本并實現您的風格..

演示

input[type=password] {
    padding: 10px;
    border: 1px solid #ddd;
    width: 50px;
    height: 50px;
    text-align: center;
    font-size: 30px;
}

jQuery(自動聚焦功能可選)

$("input").keyup(function() {
    if($(this).val().length >= 1) {
      var input_flds = $(this).closest('form').find(':input');
      input_flds.eq(input_flds.index(this) + 1).focus();
    }
});

不需要jQuery,干凈多了。

超文本標記語言

<form id="ios">
    <input type="password" maxlength="1" />
    <input type="password" maxlength="1"/>
    <input type="password" maxlength="1"/>
    <input type="password" maxlength="1"/>
</form>

半鑄鋼?鋼性鑄鐵(Cast Semi-Steel)

form#ios input[type=password]{
    height: 50px;
    width: 40px;
    text-align: center;
    font-size: 2em;
    border: 1px solid #000;
}

演示 http://jsfiddle.net/jerryhuangme/e9yhr/

為了保持風格的整潔, 我建議你創建4個輸入框。

編寫一個小腳本,當用戶在當前輸入框中輸入字符時聚焦下一個輸入框。

$("input[name*=pin]").keyup(function(e) {
  if($(this).val().length == 1) {
    $(this).attr('type', 'password');
    var input_fields = $(this).closest('form').find('input[name*=pin]');
    input_fields.eq(input_fields.index(this) + 1).focus();
  }
  if (e.keyCode==8 && e.currentTarget.name !== 'pin01') {
    $(this).attr('type', 'number');
    var input_fields = $(this).closest('form').find('input[name*=pin]');
    input_fields.eq( input_fields.index(this) - 1 ).attr('type', 'number').focus(); 
  }
});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<form action="" class="form-pin">
  <input type="number" maxlength="1" name="pin01" class="input-pin" pattern="\d*" />
  <input type="number" maxlength="1" name="pin02" class="input-pin" pattern="\d*" />
  <input type="number" maxlength="1" name="pin03" class="input-pin" pattern="\d*" />
  <input type="number" maxlength="1" name="pin04" class="input-pin" pattern="\d*" />
</form>

我看到了所有的答案,但沒有一個能解決點擊退格鍵時的問題,

為了解決這個問題,我有一個解決方案,

HTML:

<input class="input" type="text" id="input-1" maxlength=1 data-id="1" />
        <input class="input" type="text" id="input-2" maxlength=1 data-id="2" />
        <input class="input" type="text" id="input-3" maxlength=1 data-id="3" />
        <input class="input" type="text" id="input-4" maxlength=1 data-id="4" />

CSS:

.input {
    padding: 0.8rem;
    border: 1px solid #ddd;
    width: 50px;
    height: 50px;
    text-align: center;
    font-size: 30px;
    margin-left: 1rem;
  }

Javascript:

const loginInputs = document.querySelectorAll(".input");

loginInputs.forEach((el) => {
  el.addEventListener("keyup", (e) => {
    const id = +e.target.dataset.id;
    if (e.key === "Backspace") {
      if (id === 1) return;
      const prevEl = document.getElementById(`input-${id - 1}`);
      prevEl.focus();
    } else {
      if (id === 4) return;
      const nextEl = document.getElementById(`input-${id + 1}`);
      nextEl.focus();
    }
  });
});

不需要JS。 這個解決方案涵蓋了回空格,復制/粘貼等,只使用html和CSS。

如果在輸入第四個數字時,輸入字段中的數字向右移動,這可能是由于某些web瀏覽器的默認行為將輸入字段中的字符顯示為星號或項目符號。這種行為會導致輸入文本向右移動。

要解決這個問題,您可以修改元素以使用固定寬度的字體。這確保了每個字符占據相同的空間,防止了移位效應。您可以對輸入字段應用CSS樣式來實現這一點:

& lt輸入類型= & quot文本& quotid = & quotpin輸入& quotmaxlength = & quot4 & quotstyle = & quot字體系列:等寬;"& gt

完整的html組件:

<div id="pin-container">
          <div></div>
          <div></div>
          <div></div>
          <div></div>
          <label for="pin-number" class="sr-only">PIN</label>
          <input type="password" name="pin-number" id="pin-number" maxlength="4" style="font-family: monospace;">
        </div>

<style>
  #pin-container {
    display: inline-block;
    position: relative;
  }
  #pin-container div {
    background-color: #F2F2F2;
    border: 2px solid #222;
    border-radius: 7px;
    float: left;
    height: 3em;
    margin-right: 0.25em;
    width: 3em;
  }
  #pin-number {
    background-color: transparent;
    border: none;
    bottom: 1.1em;
    /* font-family: monospace; <-- here or inline html */
    font-size: 1.9em;
    left: 0.8em;
    letter-spacing: 1.64em;
    outline: none;
    position: absolute;
  }
</style>