質問するログイン新規登録

回答編集履歴

3

テキスト修正

2019/12/27 12:54

投稿

jun68ykt
jun68ykt

スコア9058

answer CHANGED
@@ -41,4 +41,17 @@
41
41
  - **動作確認用CodePen:** [https://codepen.io/jun68ykt/pen/wvBqaQd?editors=1010](https://codepen.io/jun68ykt/pen/wvBqaQd?editors=1010)
42
42
     
43
43
 
44
- - cdnjs: [lodash.js](https://cdnjs.com/libraries/lodash.js/)
44
+ - cdnjs: [lodash.js](https://cdnjs.com/libraries/lodash.js/)
45
+
46
+
47
+ ### 追記2
48
+
49
+ 私の上記回答のコードだと、以下の手順で再現されるような不便さがありまして、実用に耐えうるものになっていないです。
50
+
51
+ - input が空欄の状態から、1,2,3,4,5,6,7,8 と順に打つ。
52
+ - `4`の後ろにスペースが追加された `1234 5678` と表示される。
53
+ - `3` を別の数字に修正するために、`3` の後ろをクリックするか、矢印キーで、`3`の後ろにカーソルを移動させる。
54
+ - バックスペースを押す
55
+ - 表示が `1245 678` となり、かつ、カーソルが末尾(`8` の後ろ)に移動してしまう。
56
+
57
+ 上記の手順で、バックスペースを押した後の望ましい状態は、`2`と`4`の間にカーソルがあることですが、そのようになりません。これをきちんと制御するには、input のカーソル位置取得、設定をきめ細かくやる必要がありそうです。

2

テキスト修正

2019/12/27 12:54

投稿

jun68ykt
jun68ykt

スコア9058

answer CHANGED
@@ -22,4 +22,23 @@
22
22
  - 半角数字以外の文字(スペース含む。)が入力されても無視されます。
23
23
  - 途中まで入力した値をバックスペースで消していくときに、自動で追加された区切りのスペースは、自動的に消去されます。(※スペースを消すためのバックスペースを打つ必要がない、という意味です。)
24
24
 
25
+
25
- 参考になれば幸いです。
26
+ 参考になれば幸いです。
27
+
28
+ ### 追記
29
+ 上記の回答では、4桁ずつ区切るために正規表現を使いましたが、別の方法で区切るコードを挙げます。
30
+
31
+ 「質問への追記・修正」のやりとりを拝読して、外部のモジュールも、場合によっては利用出来るということなのかなと思われました。以下は、 4桁ずつ区切るために、lodash の [_.chunk](https://lodash.com/docs/#chunk) を使ったコードです。
32
+
33
+ ```javascript
34
+ document
35
+ .getElementById('card-number-input')
36
+ .addEventListener('input', function(e) {
37
+ const digits = e.target.value.replace(/[^0-9]/g, '');
38
+ e.target.value = _.chunk(digits, 4).map(a => a.join('')).join(' ');
39
+ });
40
+ ```
41
+ - **動作確認用CodePen:** [https://codepen.io/jun68ykt/pen/wvBqaQd?editors=1010](https://codepen.io/jun68ykt/pen/wvBqaQd?editors=1010)
42
+    
43
+
44
+ - cdnjs: [lodash.js](https://cdnjs.com/libraries/lodash.js/)

1

テキスト修正

2019/12/27 12:06

投稿

jun68ykt
jun68ykt

スコア9058

answer CHANGED
@@ -20,6 +20,6 @@
20
20
 
21
21
  上記では、
22
22
  - 半角数字以外の文字(スペース含む。)が入力されても無視されます。
23
- - 途中まで入力した値をバックスペースで消していくときに、自動で追加された区切りのスペースは、自動的に消去されます。
23
+ - 途中まで入力した値をバックスペースで消していくときに、自動で追加された区切りのスペースは、自動的に消去されます。(※スペースを消すためのバックスペースを打つ必要がない、という意味です。)
24
24
 
25
25
  参考になれば幸いです。