回答編集履歴

2

`pattern` 属性から `\^\$` を削除。`blur, focusout` イベントのコード追加。

2016/03/30 17:31

投稿

think49
think49

スコア18164

test CHANGED
@@ -1,10 +1,8 @@
1
- 未検証ですが、`input.checkValidity()` で出来そうな気がしま
1
+ `input.reportValidity()` で期待通りの動作しました
2
-
3
- **(2016/03/31 01:40追記)** 訂正。`input.reportValidity()` で期待通りの動作しました。
4
2
 
5
3
 
6
4
 
7
- - [input[type=text]のvalidate - JSFiddle](https://jsfiddle.net/mchw17L4/1/)
5
+ - [input[type=text]のvalidate - JSFiddle](https://jsfiddle.net/mchw17L4/2/)
8
6
 
9
7
  - [4.10.5 input要素 — HTML 5.1 日本語訳](http://momdo.github.io/html51/forms.html#the-input-element)
10
8
 
@@ -24,12 +22,52 @@
24
22
 
25
23
  }
26
24
 
25
+
26
+
27
+ function handleBlur (event) {
28
+
29
+ var input = event.target;
30
+
31
+
32
+
33
+ setTimeout(input.reportValidity.bind(input), 0)
34
+
35
+ }
36
+
37
+
38
+
39
+ document.addEventListener('focusout', function handleFocusout (event) {
40
+
41
+ var input = event.target;
42
+
43
+
44
+
45
+ if (input.id === 'sample') {
46
+
47
+ input.reportValidity();
48
+
49
+ }
50
+
51
+ }, false);
52
+
27
53
  </script>
28
54
 
29
- <input type="text" pattern="^[^\u0000-\u007F]*$" oninput="handleInput(event);">
55
+ <label>input <input type="text" pattern="[^\u0000-\u007F]*" oninput="handleInput(event);"></label>
56
+
57
+ <label>blur <input type="text" pattern="[^\u0000-\u007F]*" onblur="handleBlur(event);"></label>
58
+
59
+ <label>focusout <input id="sample" type="text" pattern="[^\u0000-\u007F]*"></label>
30
60
 
31
61
  ```
32
62
 
33
63
 
34
64
 
65
+ **(更新履歴)**
66
+
67
+ - 2016/03/31 01:40 `input.checkValidity()` を `input.reportValidity()` に修正
68
+
69
+ - 2016/03/31 02:30 `pattern` 属性から `^$` を削除。`blur, focusout` イベントのコード追加。
70
+
71
+
72
+
35
73
  Re: k499778 さん

1

コード追加 input\.reportValidity\(\);

2016/03/30 17:31

投稿

think49
think49

スコア18164

test CHANGED
@@ -1,6 +1,10 @@
1
1
  未検証ですが、`input.checkValidity()` で出来そうな気がします。
2
2
 
3
+ **(2016/03/31 01:40追記)** 訂正。`input.reportValidity()` で期待通りの動作しました。
3
4
 
5
+
6
+
7
+ - [input[type=text]のvalidate - JSFiddle](https://jsfiddle.net/mchw17L4/1/)
4
8
 
5
9
  - [4.10.5 input要素 — HTML 5.1 日本語訳](http://momdo.github.io/html51/forms.html#the-input-element)
6
10
 
@@ -8,4 +12,24 @@
8
12
 
9
13
 
10
14
 
15
+ ```HTML
16
+
17
+ <script>
18
+
19
+ 'use strict';
20
+
21
+ function handleInput (event) {
22
+
23
+ event.target.reportValidity();
24
+
25
+ }
26
+
27
+ </script>
28
+
29
+ <input type="text" pattern="^[^\u0000-\u007F]*$" oninput="handleInput(event);">
30
+
31
+ ```
32
+
33
+
34
+
11
35
  Re: k499778 さん