回答編集履歴

1

追伸

2018/06/23 06:56

投稿

退会済みユーザー
test CHANGED
@@ -1 +1,193 @@
1
1
  html の div 要素に設定したクラス名と、jQuery のセレクタに指定したクラス名が違うようですが?
2
+
3
+
4
+
5
+ 【追伸】
6
+
7
+
8
+
9
+ 上の私の 2018/06/23 15:37 のコメントで「こうするのが良いのではという案を回答欄に書いておきます」と書きましたが、それを以下に書いておきます。
10
+
11
+
12
+
13
+ ID と Passowrd のユーザー入力をクライアントスクリプトで検証して、検証 NG だったらエラーメッセージを表示するということだと理解していますが、ID と Passowrd の要件は異なるのが普通でしょうから、それぞれの要件に従って検証しテキストボックスの横に別々にエラーメッセージを表示する方がユーザーフレンドリーだと思います。
14
+
15
+
16
+
17
+ また、未入力時のエラーと、入力が要件に合うか否かは別々に検証して、それそれの結果に応じてエラーメッセージを表示するのがやはりユーザーフレンドリーだと思います。
18
+
19
+
20
+
21
+ 質問に書かれた「どちらも半角を対象にし、全角入力時は文字数を満たしても対象外」というような条件は正規表現を使って検証するのがよさそうです。
22
+
23
+
24
+
25
+ その例を以下に書いておきます。
26
+
27
+
28
+
29
+ 以下の例での入力の要件は、ID は半角英数字 4 ~ 8 文字、Password は最低 1 文字の数字を含む半角英数字 4 ~ 8 文字としています。
30
+
31
+
32
+
33
+ jQuery の show(), hide() は v3.x では使えないそうなので注意してください。
34
+
35
+
36
+
37
+ ```
38
+
39
+ <!DOCTYPE html>
40
+
41
+
42
+
43
+ <html xmlns="http://www.w3.org/1999/xhtml">
44
+
45
+ <head runat="server">
46
+
47
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
48
+
49
+ <title></title>
50
+
51
+ <script src="/Scripts/jquery-1.10.2.js"></script>
52
+
53
+ <script type="text/javascript">
54
+
55
+ //<![CDATA[
56
+
57
+ function RequiredFieldValidatorEvaluateIsValid(value) {
58
+
59
+ if (value.length == 0) {
60
+
61
+ return false;
62
+
63
+ } else {
64
+
65
+ return true;
66
+
67
+ }
68
+
69
+ }
70
+
71
+
72
+
73
+ function RegularExpressionValidatorEvaluateIsValid(value, expression) {
74
+
75
+ if (value.length == 0) {
76
+
77
+ return true;
78
+
79
+ }
80
+
81
+ var rx = new RegExp(expression);
82
+
83
+ var matches = rx.exec(value);
84
+
85
+ return (matches != null && value == matches[0]);
86
+
87
+ }
88
+
89
+
90
+
91
+ var idvalidationexpression = "^[a-zA-Z0-9]{4,8}$";
92
+
93
+ var passwordvalidationexpression = "^(?=.*\d)[a-zA-Z0-9]{4,8}$";
94
+
95
+
96
+
97
+ function showHideValidationResult(element, result) {
98
+
99
+ if (result) {
100
+
101
+ $(element).hide();
102
+
103
+ } else {
104
+
105
+ $(element).show();
106
+
107
+ }
108
+
109
+ }
110
+
111
+
112
+
113
+ $(function () {
114
+
115
+ $("#UserId").on("keydown keyup keypress change", function () {
116
+
117
+ var value = $(this).val();
118
+
119
+
120
+
121
+ var result1 = RequiredFieldValidatorEvaluateIsValid(value);
122
+
123
+ var element1 = document.getElementById("idRequired");
124
+
125
+ showHideValidationResult(element1, result1);
126
+
127
+
128
+
129
+ var result2 = RegularExpressionValidatorEvaluateIsValid(value, idvalidationexpression);
130
+
131
+ var element2 = document.getElementById("idValidation");
132
+
133
+ showHideValidationResult(element2, result2);
134
+
135
+ });
136
+
137
+
138
+
139
+ $("#Password").on("keydown keyup keypress change", function () {
140
+
141
+ var value = $(this).val();
142
+
143
+
144
+
145
+ var result1 = RequiredFieldValidatorEvaluateIsValid(value);
146
+
147
+ var element1 = document.getElementById("passwordRequired");
148
+
149
+ showHideValidationResult(element1, result1);
150
+
151
+
152
+
153
+ var result2 = RegularExpressionValidatorEvaluateIsValid(value, passwordvalidationexpression);
154
+
155
+ var element2 = document.getElementById("passwordValidation");
156
+
157
+ showHideValidationResult(element2, result2);
158
+
159
+ });
160
+
161
+ });
162
+
163
+ //]]>
164
+
165
+ </script>
166
+
167
+ </head>
168
+
169
+ <body>
170
+
171
+ <form id="form1" runat="server">
172
+
173
+ <input type="text" name="UserId" id="UserId" />
174
+
175
+ <span id="idRequired" style="display:none">ID は必須入力</span>
176
+
177
+ <span id="idValidation" style="display:none">半角英数字 4 ~ 8 文字</span>
178
+
179
+ <br />
180
+
181
+ <input type="text" name="Password" id="Password" />
182
+
183
+ <span id="passwordRequired" style="display:none">Passowrd は必須入力</span>
184
+
185
+ <span id="passwordValidation" style="display:none">最低 1 文字の数字を含む半角英数字 4 ~ 8 文字</span>
186
+
187
+ </form>
188
+
189
+ </body>
190
+
191
+ </html>
192
+
193
+ ```