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

回答編集履歴

6

テキスト修正

2018/10/28 15:27

投稿

jun68ykt
jun68ykt

スコア9058

answer CHANGED
@@ -10,7 +10,7 @@
10
10
  });
11
11
  ```
12
12
 
13
- 上記は、 `<input name="username" />` に半角英数字以外の入力があっても、それを除去した値を `val()` で上書きしています。(正規表現 g オプションがないと、全角で早くタイピングされたときに全角が残る場合が時々あるの、付けています。)
13
+ 上記は、 `<input name="username" />` に半角英数字以外の入力があっても、それを除去した値を `val()` で上書きしています。(正規表現 `g` オプション、全角で早くタイピングされたときに全角文字いくつか残る場合があるの記号を複数含むテキストをコピペされたときのために付けています。)
14
14
 
15
15
 
16
16
 

5

テキスト修正

2018/10/28 15:27

投稿

jun68ykt
jun68ykt

スコア9058

answer CHANGED
@@ -10,7 +10,7 @@
10
10
  });
11
11
  ```
12
12
 
13
- 上記は、 `<input name="username" />` に半角英数字以外の入力があっても、それを除去した値を `value` しています。(正規表現に g オプションがないと、全角で早くタイピングされたときに全角が残る場合が時々あるので、付けています。)
13
+ 上記は、 `<input name="username" />` に半角英数字以外の入力があっても、それを除去した値を `val()` で上書きしています。(正規表現に g オプションがないと、全角で早くタイピングされたときに全角が残る場合が時々あるので、付けています。)
14
14
 
15
15
 
16
16
 

4

テキスト修正

2018/10/28 15:03

投稿

jun68ykt
jun68ykt

スコア9058

answer CHANGED
@@ -26,6 +26,6 @@
26
26
 
27
27
  以下はそのサンプルです。
28
28
 
29
- - [https://jsfiddle.net/jun68ykt/6hkpc3a9/3/](https://jsfiddle.net/jun68ykt/6hkpc3a9/3/)
29
+ - [https://jsfiddle.net/jun68ykt/6hkpc3a9/4/](https://jsfiddle.net/jun68ykt/6hkpc3a9/4/)
30
30
 
31
31
  上記のサンプルですが、メモ帳か何かに、たとえば`abc-DEF++G` と打っておいて、これを上下のパスワード入力にコピペすると、上のほうは記号が削られて入力値は `abcDEFG` となり、下のほうは削る処理をしないので `abc-DEF++G` がそのまま入ってきます。送信ボタンをクリックすると両者が一致しない旨のalertを表示します。

3

テキスト修正

2018/10/28 14:27

投稿

jun68ykt
jun68ykt

スコア9058

answer CHANGED
@@ -18,4 +18,14 @@
18
18
 
19
19
  - [https://jsfiddle.net/jun68ykt/hvquyr8t/4/](https://jsfiddle.net/jun68ykt/hvquyr8t/4/)
20
20
 
21
- 参考になれば幸いです。
21
+ 参考になれば幸いです。
22
+
23
+ #### 追記
24
+
25
+ maisumakunさんのご指摘どおり、許容する文字以外を入力時に削ってしまうと、ユーザーが意図しないパスワードが設定されてしまうことがあり得ますので、これを回避するために、(様々な登録フォームで見かけますが)もうひとつ確認用のパスワード入力欄を設けて、そちらはユーザーからの入力を削らずにそのまま保持し、送信ボタンがクリックされるなどしたときに、二つのパスワード入力欄の値の一致をバリデーションのひとつに追加することをお勧めします。
26
+
27
+ 以下はそのサンプルです。
28
+
29
+ - [https://jsfiddle.net/jun68ykt/6hkpc3a9/3/](https://jsfiddle.net/jun68ykt/6hkpc3a9/3/)
30
+
31
+ 上記のサンプルですが、メモ帳か何かに、たとえば`abc-DEF++G` と打っておいて、これを上下のパスワード入力にコピペすると、上のほうは記号が削られて入力値は `abcDEFG` となり、下のほうは削る処理をしないので `abc-DEF++G` がそのまま入ってきます。送信ボタンをクリックすると両者が一致しない旨のalertを表示します。

2

テキスト修正

2018/10/28 13:54

投稿

jun68ykt
jun68ykt

スコア9058

answer CHANGED
@@ -16,6 +16,6 @@
16
16
 
17
17
  以下は上記のサンプルです。
18
18
 
19
- - [https://jsfiddle.net/jun68ykt/hvquyr8t/3/](https://jsfiddle.net/jun68ykt/hvquyr8t/3/)
19
+ - [https://jsfiddle.net/jun68ykt/hvquyr8t/4/](https://jsfiddle.net/jun68ykt/hvquyr8t/4/)
20
20
 
21
21
  参考になれば幸いです。

1

テキスト修正

2018/10/28 12:35

投稿

jun68ykt
jun68ykt

スコア9058

answer CHANGED
@@ -6,7 +6,7 @@
6
6
  ```javascript
7
7
  $('input[name="username"]').keyup(function(){
8
8
  var v = $(this).val();
9
- $(this).val(v.replace(/[^a-zA-z0-9]/g,''));
9
+ $(this).val(v.replace(/[^a-zA-Z0-9]/g,''));
10
10
  });
11
11
  ```
12
12