回答編集履歴

1

ちょうせい

2021/10/28 06:51

投稿

yambejp
yambejp

スコア116724

test CHANGED
@@ -77,3 +77,99 @@
77
77
  ```
78
78
 
79
79
  ファイルを複数おくる必要がないならプレビューを残しておくのは混乱のもとでは?
80
+
81
+
82
+
83
+ # form分割パターン
84
+
85
+ どれかで画像を選んだら別の画像は削除
86
+
87
+ ```javascript
88
+
89
+ <script>
90
+
91
+ $(function(){
92
+
93
+ $('input[type=file]').on('change', function () {
94
+
95
+ var self=$(this);
96
+
97
+ var file = $(this).prop('files')[0];
98
+
99
+ var reader = new FileReader();
100
+
101
+ $('.preview,.delete').remove();
102
+
103
+ $('[type=file]').not($(this)).val("");
104
+
105
+ reader.addEventListener('load',e=>{
106
+
107
+ self.closest('label')
108
+
109
+ .append($('<img class="preview">').attr({src:e.target.result}))
110
+
111
+ .append($('<button type="button" class="delete">削除</button>'));
112
+
113
+ });
114
+
115
+ reader.readAsDataURL(file);
116
+
117
+ });
118
+
119
+ $(document).on('click','.delete',function(){
120
+
121
+ $(this).closest('.camera-wrap').find('.preview,.delete').remove().end().find('[type=file]').val('');
122
+
123
+ });
124
+
125
+ $('form').on('reset',function(){
126
+
127
+ $(this).find('.preview,.delete').remove();
128
+
129
+ });
130
+
131
+ });
132
+
133
+ </script>
134
+
135
+ <form method="post" enctype="multipart/form-data">
136
+
137
+ <input type="text" name="test">
138
+
139
+ <div class="camera-wrap">
140
+
141
+ <label class="camera">
142
+
143
+ <input type="file" name="file[]">
144
+
145
+ </label>
146
+
147
+ </div>
148
+
149
+ <button type="reset">リセット</button>
150
+
151
+ <button type="submit" >送信</button>
152
+
153
+ </form>
154
+
155
+ <form method="post" enctype="multipart/form-data">
156
+
157
+ <input type="text" name="test">
158
+
159
+ <div class="camera-wrap">
160
+
161
+ <label class="camera">
162
+
163
+ <input type="file" name="file[]">
164
+
165
+ </label>
166
+
167
+ </div>
168
+
169
+ <button type="reset">リセット</button>
170
+
171
+ <button type="submit" >送信</button>
172
+
173
+ </form>
174
+
175
+ ```