回答編集履歴

3

質問者さんの名前を修正\(失礼しました\)

2017/08/30 06:46

投稿

think49
think49

スコア18164

test CHANGED
@@ -160,4 +160,4 @@
160
160
 
161
161
 
162
162
 
163
- Re: _3104 さん
163
+ Re: Z-TALBO さん

2

コードを追記

2017/08/30 06:46

投稿

think49
think49

スコア18164

test CHANGED
@@ -36,4 +36,128 @@
36
36
 
37
37
 
38
38
 
39
+ # コード
40
+
41
+
42
+
43
+ 要件を満たすコードとしては下記コードとなります。
44
+
45
+
46
+
47
+ - [select要素ノードのvalue値を書き換える - JSFiddle](https://jsfiddle.net/3mps54jw/3/)
48
+
49
+
50
+
51
+ ```JavaScript
52
+
53
+ jQuery('#Select').on('change', function (event) {
54
+
55
+ var input = event.target,
56
+
57
+ select = jQuery('.test', input.form),
58
+
59
+ firstSelect = select[0];
60
+
61
+
62
+
63
+ select.val(input.checked ? firstSelect.value : firstSelect.options[0].value);
64
+
65
+ });
66
+
67
+ ```
68
+
69
+
70
+
71
+ が、「[項目1] を選択し、チェックボックスで一括選択 -> [項目1] を再選択してからチェックボックスで一括選択…しようとしたらリセットされたので、[項目1] を再選択してチェックボックスで一括選択」のような悲劇が起こりうる点でユーザビリティが高くないと感じます。
72
+
73
+ 解決手段は簡単で [リセット] ボタンと [一括選択] ボタンを別々に用意します。
74
+
75
+
76
+
77
+ - [select要素ノードのvalue値を書き換える(一括選択/リセット分類型) - JSFiddle](https://jsfiddle.net/3mps54jw/4/)
78
+
79
+
80
+
81
+ ```HTML
82
+
83
+ <form id="sample">
84
+
85
+ <p><input name="batch-selection" type="button" value="全項目を項目1に同期" title="全項目を項目1の選択肢にする"> <input type="reset" value="リセット"></p>
86
+
87
+ <p>
88
+
89
+ <label>項目1
90
+
91
+ <select name="test0" class="test">
92
+
93
+ <option>選択してね</option>
94
+
95
+ <option>0</option>
96
+
97
+ <option>1</option>
98
+
99
+ <option>2</option>
100
+
101
+ </select>
102
+
103
+ </label>
104
+
105
+ <label>項目2
106
+
107
+ <select name="test1" class="test">
108
+
109
+ <option>選択してね</option>
110
+
111
+ <option>0</option>
112
+
113
+ <option>1</option>
114
+
115
+ <option>2</option>
116
+
117
+ </select>
118
+
119
+ </label>
120
+
121
+ <label>項目3
122
+
123
+ <select name="test2" class="test">
124
+
125
+ <option>選択してね</option>
126
+
127
+ <option>0</option>
128
+
129
+ <option>1</option>
130
+
131
+ <option>2</option>
132
+
133
+ </select>
134
+
135
+ </label>
136
+
137
+ </p>
138
+
139
+ </form>
140
+
141
+
142
+
143
+ <script>
144
+
145
+ 'use strict';
146
+
147
+ jQuery('#sample input[name="batch-selection"]').on('click', function (event) {
148
+
149
+ var select = jQuery('.test', event.target.form);
150
+
151
+
152
+
153
+ select.val(select[0].value);
154
+
155
+ });
156
+
157
+ </script>
158
+
159
+ ```
160
+
161
+
162
+
39
163
  Re: _3104 さん

1

jQuery API

2017/08/30 05:43

投稿

think49
think49

スコア18164

test CHANGED
@@ -1,3 +1,7 @@
1
+ # DOM API
2
+
3
+
4
+
1
5
  下記コードでselect要素ノードの値を変更できます。
2
6
 
3
7
 
@@ -16,4 +20,20 @@
16
20
 
17
21
 
18
22
 
23
+ # jQuery API
24
+
25
+
26
+
27
+ `querySelectorAll()` は `jQuery()` に置き換えられます。
28
+
29
+ select要素ノードの `value` プロパティは `jQuery#val()` に置き換えられます。
30
+
31
+
32
+
33
+ - [jQuery() | jQuery API Documentation](https://api.jquery.com/jQuery/#jQuery-selector-context)
34
+
35
+ - [.val() | jQuery API Documentation](https://api.jquery.com/val/)
36
+
37
+
38
+
19
39
  Re: _3104 さん