質問編集履歴

3

p

2022/06/14 03:12

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -13,93 +13,4 @@
13
13
  ➁上記で述べたようにしたいのですが、お名前からカーソルが外れて、その値が間違っているとき、なぜか下の各欄のエラー文もでてしまいます。
14
14
 
15
15
  どなたかご教授いただけると嬉しいです。
16
- ```html
17
- <form name="target">
18
- お名前<br>
19
- <input type="text" id="onamae" onblur="validation()">
20
- <br>
21
- <p class="err"></p>
22
- メールアドレス<br>
23
- <input type="text" id="email" name="mail" onblur="validation()">
24
- <br>
25
- <p class="err"></p>
26
- メールアドレス(確認用)<br>
27
- <input type="text" id="email1" name="mail" onblur="validation()">
28
- <br>
29
- <p class="err"></p>
30
- 性別<br>
31
- 男<input type="radio" id="radio" name="radio" onblur="validation()">
32
- 女<input type="radio" id="radio" name="radio" onblur="validation()">
33
- <p class="err"></p>
34
- <input type="button" value="送信" id="submit1" onclick="validation_click()">
35
- <p class="err"></p>
36
- </form>
37
- ```
38
- ```javascript
39
- let err = document.getElementsByClassName("err");
40
16
 
41
-
42
- function validation(){
43
- validation_click();
44
- let onamae = document.getElementById("onamae").value;
45
- if(onamae.match(/^[^\x01-\x7E\^0-9]{1,20}$/)){ //matchを使って正規表現にマッチしてるか
46
- err[0].innerHTML = "";
47
- }else{
48
- err[0].style.color = "red"; //マッチしなかったらエラー文
49
- err[0].innerHTML = "全角1〜20文字で入力してください";
50
- }
51
-
52
- let email = document.getElementById("email").value;
53
- console.log(email);
54
- if(email.match(/^[a-zA-Z0-9_+-]+(\.[a-zA-Z0-9_+-]+)*@([a-zA-Z0-9][a-zA-Z0-9-]*[a-zA-Z0-9]*\.)+[a-zA-Z]{2,}$/)){
55
- err[1].innerHTML = "";
56
- }else{
57
- err[1].style.color = "red"; //マッチしなかったらエラー
58
- err[1].innerHTML = "メールアドレスが不正です";
59
- }
60
-
61
- let email1 = document.getElementById("email1").value;
62
- if(email === email1){
63
- err[2].innerHTML = "";
64
- }else{
65
- err[2].style.color = "red";
66
- err[2].innerHTML = "入力したメールアドレスと異なっています";
67
- }
68
-
69
- let flag = false;
70
- for(let i = 0;i < document.target.radio.length;i++){
71
- if(document.target.radio[i].checked){
72
- flag = true;
73
- err[3].innerHTML = "";
74
- }
75
- }
76
- if(!flag){
77
- err[3].innerHTML = "";
78
- }
79
- }
80
-
81
- function validation_click(){
82
- let checklist = [
83
- onamae.value,
84
- email.value,
85
- email1.value,
86
- radio
87
- ];
88
- let submit1 = document.getElementById("submit1");
89
- for(i = 0;i < checklist.length;i++){
90
- console.log(checklist);
91
- if(checklist = []){
92
- err[0].style.color = "red";
93
- err[0].innerHTML = "値を入力してください";
94
- err[1].style.color = "red";
95
- err[1].innerHTML = "値を入力してください";
96
- err[2].style.color = "red";
97
- err[2].innerHTML = "値を入力してください";
98
- err[3].style.color = "red";
99
- err[3].innerHTML = "選択してください";
100
- }
101
- }
102
- }
103
-
104
-
105
- ```

2

コード

2022/05/24 10:55

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -14,7 +14,7 @@
14
14
 
15
15
  どなたかご教授いただけると嬉しいです。
16
16
  ```html
17
- <form name="target" 1234>
17
+ <form name="target">
18
18
  お名前<br>
19
19
  <input type="text" id="onamae" onblur="validation()">
20
20
  <br>

1

2022/05/24 09:38

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -1,14 +1,15 @@
1
1
  現在バリデーションをしています。
2
2
 
3
3
  **やりたいこと**
4
+ ➀validation_click()のif文で全記入欄に何も入っていない時にクリックをしたら、それぞれの適したエラー文が出る、そこから記入欄に記入し、全て合っている時は送信ボタンを押せる
4
- ➀入力欄に一つでも間違ているものがあれば、送信ボタン押せないようにする
5
+ 一つでも未記入&間違ているものがあればボタン押せない
5
6
  ➁エラーを1つ1つ出したい
6
7
  例 お名前の欄からカーソルがそれた時、正しい名前が入っていればお名前のエラーはでない
7
8
    正しくないものがはいった場合エラーがお名前の下に出る
8
9
    その間、他の欄は記入していないため何も起きないようにする
9
10
 
10
11
  **詰まっていること**
11
- ➀送信ボタンを条件によって止める方法がわからず、return falseやdisabledを使ってみましたが、何も入っていない時にボタンをクリックしたらエラーが出る処理ができなくなったり、全部記入したのに押せなかったりと、よくわかりませんでした。
12
+ ➀送信ボタンを条件によって止める方法がわからず、return falseやdisabledを使ってみましたが、何も入っていない時にボタンをクリックしたらエラーが出るが、その後の正誤判定ができず、return falseやdisabledをうまく使えなく全部記入したのに押せなかったりと、よくわかりませんでした。
12
13
  ➁上記で述べたようにしたいのですが、お名前からカーソルが外れて、その値が間違っているとき、なぜか下の各欄のエラー文もでてしまいます。
13
14
 
14
15
  どなたかご教授いただけると嬉しいです。