回答編集履歴

2

追記

2017/10/16 09:21

投稿

yambejp
yambejp

スコア114843

test CHANGED
@@ -27,3 +27,135 @@
27
27
  場合によってはajaxでデータをおくって初期値を調整する方法もありますが
28
28
 
29
29
  そこまでするほどではないかと。
30
+
31
+
32
+
33
+ # sample
34
+
35
+ 以下ちょっとバグバグしてますが、ざっとした流れはこれでわかると思います。
36
+
37
+ focus時に削除処理をいれています
38
+
39
+
40
+
41
+
42
+
43
+ ```javascript
44
+
45
+ $(function() {
46
+
47
+ var out_mbr=["先発01","先発02","先発03","先発04","先発05","先発06","先発07","先発08","先発09","先発10","先発11"];
48
+
49
+ var in_mbr=["控え01","控え02","控え03","控え04","控え05","控え06"];
50
+
51
+ $(document).on('focus','select[name="change_time[]"]',function(){
52
+
53
+ var me=$(this);
54
+
55
+ me.find('option:gt(0)').remove();
56
+
57
+ for(var i=0;i<=120;i++){
58
+
59
+ me.append($('<option>').val(i).text(i));
60
+
61
+ };
62
+
63
+ var v=parseInt(me.closest('.row').prev('.row').find('select[name="change_time[]"]').val());
64
+
65
+ me.find('option').filter(function(){return $(this).val()!="" && parseInt($(this).val())<v;}).remove();
66
+
67
+
68
+
69
+ });
70
+
71
+ $(document).on('focus','select[name="out_mbr[]"]',function(){
72
+
73
+ var me=$(this);
74
+
75
+ me.find('option:gt(0)').remove();
76
+
77
+ out_mbr.forEach(function(i){ me.append($('<option>').val(i).text(i));});
78
+
79
+ $('select[name="out_mbr[]"]').filter(function(){return $(this).val()!=="";}).each(function(){
80
+
81
+ var v=$(this).val();
82
+
83
+ me.find('option').filter(function(){return $(this).val()==v;}).remove();
84
+
85
+ });
86
+
87
+ });
88
+
89
+ $(document).on('focus','select[name="in_mbr[]"]',function(){
90
+
91
+ var me=$(this);
92
+
93
+ me.find('option:gt(0)').remove();
94
+
95
+ in_mbr.forEach(function(i){ me.append($('<option>').val(i).text(i));});
96
+
97
+ $('select[name="in_mbr[]"]').filter(function(){return $(this).val()!=="";}).each(function(){
98
+
99
+ var v=$(this).val();
100
+
101
+ me.find('option').filter(function(){return $(this).val()==v;}).remove();
102
+
103
+ });
104
+
105
+ });
106
+
107
+ $(document).on('click','[type=button][value=追加]',function(){
108
+
109
+ var r1=$(this).closest('.row');
110
+
111
+ var r2=r1.clone();
112
+
113
+ r2.find('[type=button][value=削除]').css('visibility','visible').prop('disabled',false);
114
+
115
+ r1.after(r2);
116
+
117
+ });
118
+
119
+ $(document).on('click','[type=button][value=削除]',function(){
120
+
121
+ $(this).closest('.row').remove();
122
+
123
+ });
124
+
125
+ });
126
+
127
+
128
+
129
+ ```
130
+
131
+ ```HTML
132
+
133
+ <div class="row">
134
+
135
+ <select name="change_time[]">
136
+
137
+ <option value="">交代時間</option>
138
+
139
+ </select>
140
+
141
+ 交代選手名
142
+
143
+ <select name="out_mbr[]">
144
+
145
+ <option value="">OUT選手</option>
146
+
147
+ </select>
148
+
149
+ <select name="in_mbr[]">
150
+
151
+ <option value="">IN選手名</option>
152
+
153
+ </select>
154
+
155
+ <input type="button" value="削除" style="visibility:hidden" disabled>
156
+
157
+ <input type="button" value="追加">
158
+
159
+ </div>
160
+
161
+ ```

1

追記

2017/10/16 09:21

投稿

yambejp
yambejp

スコア114843

test CHANGED
@@ -10,6 +10,14 @@
10
10
 
11
11
 
12
12
 
13
+ また1行目のクリアの位置が2行目には削除というのはあまりよくありません。
14
+
15
+ 1行目がクリアなら2行目にもクリアを置き別途削除を置きます
16
+
17
+ そうでないなら1行目のクリアは辞めたほうがいいでしょう。
18
+
19
+
20
+
13
21
  全体の流れとしては
14
22
 
15
23
  基本的には1行目をcloneしてつかい、交代時間は1行目の値をベースに