teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

4

誤字が在ったため修正

2016/12/13 12:33

投稿

kusaka00
kusaka00

スコア55

title CHANGED
File without changes
body CHANGED
@@ -136,6 +136,4 @@
136
136
  </html>
137
137
  ```
138
138
 
139
- 何卒宜しくお願い致します。ody>
139
+ 何卒宜しくお願い致します。
140
- </html>
141
- ```

3

説明文を変更

2016/12/13 12:33

投稿

kusaka00
kusaka00

スコア55

title CHANGED
File without changes
body CHANGED
@@ -1,26 +1,33 @@
1
1
  jQueryを使ってファイルのアップロードができるようにしたいです。
2
- 1つだけだったら、できたのですが、複数設置しようとするとうまくいきません。
2
+ 1つだけだったら、できたのですが、ソース上に設置した「追加」のボタンを押し、ファイルをアップロードするinputタグを複数設置するとうまくいきません。
3
3
 
4
+ ■出来たこと
5
+ まず最初にファイルをアップロードするinputタグをHTML上に直書きし
4
- 5M以上のファイルをアップロードしようとするとダイヤログがでるようにてますが、追加ボタンで追加したファイルのアップロードのフォーム個別に5m以上のフィアをアップロードした置きに出るダヤログ表示させたいです。
6
+ アップロードしようとしたファイルのバイト数を取得し、if文5m以上のファイと5m以下のファル容量判断
7
+ ・ファイルの容量が5m以上ならダイアログを表示し5m以上のファイルなので、
8
+ 5m以下のファイルを上げてくださいと注釈が出るようにする。
9
+ ・アップロードしようとしたファイルのファイル名、容量、種類を表示
10
+ ・「追加」ボタンを押すことで上記と同じ事ができるタグを追加
5
11
 
6
- 初めての質問で、失礼な書き方をしていたら申し訳ありません。
7
- 何卒宜しお願致します。
12
+ ■出来なて困ってること
13
+ ・ページを表示した時に最初に表示されている「ファイルを選択」ボタンをクリックすると上記で書いた動作はするが、
14
+ 「追加」ボタンを押して表示された「ファイルを選択」ボタンでは5m以上のファイルを選択してもダイアログが反応しない
15
+ ・ページを表示した時に最初に表示されている「ファイルを選択」ボタンを再度
16
+ ・「追加」ボタンを何回か押して、ページを表示した時に最初に表示されている「ファイルを選択」ボタンをクリックし
17
+ ファイルを選択すると全ての「ファイルを選択」ボタンに同じファイルの内容が表示される
8
18
 
19
+ ■最終的にやりたいこと
20
+ ・ファイルをアップロードしてもらう時に複数枚のファイルをアップロードできるようにしたい
21
+ ・「ファイルを選択」ボタンをクリックしてアップロードできるファイルの容量の上限は1つにつき5m
9
- ###発生している問題エラーメ
22
+ プロドするファイルが5m以上の時ダイアログを表示し、
23
+ 「アップロードしたファイルサイズが5MB以上のため、5MB以下のファイルをアップロードしてください。」
24
+ という内容を表示したい
10
- 最初に追加ボタンを押してファイルを入れる、何故か1つ目にファイル名などの表記が2つされてます。
25
+ ・「追加ボタンを押すこで任意ファイルを選択」するボタンを増や
11
26
 
12
- 追加ボタンを2回押してファイルアップロードしようとすると、上から3,2,1と重複してファイル名などが表示されてしまいます。
13
27
 
14
- 追加ボタンを押すとファイルアップロード用のボタンは出てくるのですが
15
- 複数ファイルをアップロードしようとすると最後にアップロードした画像の内容に全て上書きされてしまいます。
16
28
 
17
- 5m以上のファイルをアップロードした時にダイアログが出るのですが、それが個々の「ファイルを選択」ボタンに反応しているのかよくわからないです。
18
-
19
-
20
-
21
-
22
-
23
29
  ###該当のソースコード
30
+ ```ここに言語を入力
24
31
  <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
25
32
  <html lang="ja" xml:lang="ja">
26
33
  <head>
@@ -28,106 +35,107 @@
28
35
  <meta http-equiv="Content-Style-Type" content="text/css">
29
36
  <meta name="GENERATOR" content="JustSystems Homepage Builder Version 16.0.1.0 for Windows">
30
37
  <title></title>
31
- <link rel="stylesheet" href="style.css" type="text/css">
38
+
32
39
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
33
- <script type="text/javascript">
40
+ <script type="text/javascript">
34
41
  $(function() {
35
-
36
- if(! window.File){$('body').html('ご利用のブラウザでは、File APIをサポートしていません');}
42
+ if(! window.File){$('body').html('ご利用のブラウザでは、File APIをサポートしていません');}
37
-
43
+ //最初にHTML上に表示されているフォームボタンに対して発動
38
- $('input[type=file]').after('<sub style="font-size: 120%;font-weight:bold;display:block;margin: 10px 0 0 0;"></sub>');
44
+ $('input[type=file]').after('<sub style="font-size: 120%;font-weight:bold;display:block;margin: 10px 0 0 0;"></sub>');
39
- $('input[type=file]').change(function() {
40
- var file = $(this).prop('files')[0];
41
- $('sub').html('ファイル名:' + file.name + ' / サイズ:<span style="color:#f00">' + getFiseSize(file.size) + '</span> / 種類:' + file.type);
42
- });
43
45
  });
44
46
 
45
- //ファイルのアップロード
47
+ //ファイルのアップロード
46
- $(function() {
48
+ $(function() {
47
- var FileUpNo = '1';
49
+ var FileUpNo = '1';
50
+ //追加ボタンを押したら
48
- $('#Plus').on('click',function(){
51
+ $('#Plus').on('click',function(){
49
- FileUpNo++;
50
- $(this).before('<input type="file" name="clip-'+ FileUpNo +'" size="50"><br>');
52
+ FileUpNo++; //inputのname属性をナチュラルにするために1を加算し番号を振る
53
+ //追加ボタンの上にファイルアップロード用のinputとファイルサイズなどを表示するためのタグを挿入
51
- $('input[type=file]').after('<sub style="font-size: 120%;font-weight:bold;display:block;margin: 10px 0 0 0;"></sub>');
54
+ $(this).before('<input type="file" name="clip-'+ FileUpNo +'" size="50"><br><sub style="font-size: 120%;font-weight:bold;display:block;margin: 10px 0 0 0;"></sub>');
52
- $('input[type=file]').change(function() {
53
- var file = $(this).prop('files')[0];
54
- $('sub').html('ファイル名:' + file.name + ' / サイズ:<span style="color:#f00">' + getFiseSize(file.size) + '</span> / 種類:' + file.type);
55
- });
56
55
  });
56
+ //
57
+ $('input[type=file]').on('click',function(){
58
+ $(this).after().change(function() {
59
+ var file = $(this).prop('files')[0];
60
+ $('sub').html('ファイル名:' + file.name + ' / サイズ:<span style="color:#f00">' + getFiseSize(file.size) + '</span> / 種類:' + file.type);
61
+ });
62
+ });
63
+ //$('input[type=file]').after('');
57
64
  });
58
65
 
66
+ //以下はファイルサイズのチェック用
59
- function getFiseSize(file_size){
67
+ function getFiseSize(file_size){
60
- var str;
68
+ var str;
69
+ var unit = ['byte', 'KB', 'MB', 'GB', 'TB'];
70
+ for (var i = 0; i < unit.length; i++) {
71
+ if (file_size < 1024 || i == unit.length - 1) {
72
+ if (i == 0) {
73
+ // カンマ付与
74
+ var integer = file_size.toString().replace(/([0-9]{1,3})(?=(?:[0-9]{3})+$)/g, '$1,');
75
+ str = integer + unit[i];
76
+ } else {
77
+ // 小数点第2位は切り捨て
78
+ file_size = Math.floor(file_size * 100) / 100;
79
+ // 整数と小数に分割
80
+ var num = file_size.toString().split('.');
81
+ // カンマ付与
82
+ var integer = num[0].replace(/([0-9]{1,3})(?=(?:[0-9]{3})+$)/g, '$1,');
83
+ if (num[1]) {
84
+ file_size = integer + '.' + num[1];
85
+ }
86
+ str = file_size + unit[i];
87
+ }
88
+ break;
89
+ }
61
90
 
62
- var unit = ['byte', 'KB', 'MB', 'GB', 'TB'];
63
-
64
- for (var i = 0; i < unit.length; i++) {
65
- if (file_size < 1024 || i == unit.length - 1) {
66
- if (i == 0) {
67
- // カンマ付与
68
- var integer = file_size.toString().replace(/([0-9]{1,3})(?=(?:[0-9]{3})+$)/g, '$1,');
69
- str = integer + unit[i];
70
- } else {
71
- // 小数点第2位は切り捨て
72
- file_size = Math.floor(file_size * 100) / 100;
73
- // 整数と小数に分割
74
- var num = file_size.toString().split('.');
75
- // カンマ付与
76
- var integer = num[0].replace(/([0-9]{1,3})(?=(?:[0-9]{3})+$)/g, '$1,');
77
- if (num[1]) {
78
- file_size = integer + '.' + num[1];
79
- }
80
- str = file_size + unit[i];
81
- }
82
- break;
83
- }
84
-
85
- file_size = file_size / 1024;
91
+ file_size = file_size / 1024;
86
- //alert(file_size);
92
+ //alert(file_size);
87
93
 
88
- if (i == 'KB') {
94
+ if (i == 'KB') {
89
- }else if(i == 'byte'){
95
+ }else if(i == 'byte'){
90
- } else if(file_size > 5120){
96
+ } else if(file_size > 5120){
91
- alert("アップロードしたファイルサイズが5MB以上のため、5MB以下のファイルをアップロードしてください。");
97
+ alert("アップロードしたファイルサイズが5MB以上のため、5MB以下のファイルをアップロードしてください。");
92
- }
98
+ }
93
- }
99
+ }
94
-
95
- return str;
100
+ return str;
96
- }
101
+ }
97
102
  </script>
98
103
  </head>
99
104
  <body>
100
- <div align="center">
105
+ <div align="center">
101
- <table width="950">
106
+ <table width="950">
102
- <tbody>
107
+ <tbody>
103
- <tr>
108
+ <tr>
109
+ <td colspan="4">
104
- <td colspan="4"><form action="" method="post" enctype="multipart/form-data">
110
+ <form action="" method="post" enctype="multipart/form-data">
105
- <table border="0" cellspacing="0" cellpadding="0" width="100%">
111
+ <table border="0" cellspacing="0" cellpadding="0" width="100%">
106
- <tbody>
112
+ <tbody>
107
- <tr>
113
+ <tr>
108
- <td height="53" colspan="2"><table width="100%" border="0" cellpadding="7" cellspacing="0" class="unnamed4">
114
+ <td height="53" colspan="2"><table width="100%" border="0" cellpadding="7" cellspacing="0" class="unnamed4">
109
- <tbody>
115
+ <tbody>
110
- <tr>
116
+ <tr>
111
- <td class="Class30" bgcolor="#FFFFFF">
112
- <input type="file" name="clip-1" size="50"><br>
117
+ <td class="Class30" bgcolor="#FFFFFF"><input type="file" name="clip-1" size="50">
118
+ <br>
113
- <button id="Plus" type="button">追加</button>
119
+ <button id="Plus" type="button">追加</button>
114
- <br>
120
+ <br>
115
- <br>
121
+ <br>
116
- <span style="color:#f00;margin: 0 0 10px 0;display: block;">アップロードするファイルのサイズが5MBをこえないサイズでお願い致します。</span>
122
+ <span style="color:#f00;margin: 0 0 10px 0;display: block;">アップロードするファイルのサイズが5MBをこえないサイズでお願い致します。</span></td>
123
+ </tr>
124
+ </tbody>
125
+ </table></td>
126
+ </tr>
127
+ </tbody>
128
+ </table>
129
+ </form>
117
- </td>
130
+ </td>
118
- </tr>
131
+ </tr>
119
- </tbody>
132
+ </tbody>
120
- </table>
133
+ </table>
121
- </td>
122
- </tr>
123
- </tbody>
124
- </table>
125
- </form></td>
126
- </tr>
127
- </tbody>
128
- </table>
129
- </div>
134
+ </div>
130
135
  </body>
131
136
  </html>
137
+ ```
132
138
 
133
- 何卒宜しくお願い致します。
139
+ 何卒宜しくお願い致します。ody>
140
+ </html>
141
+ ```

2

タグの追加

2016/12/13 12:31

投稿

kusaka00
kusaka00

スコア55

title CHANGED
File without changes
body CHANGED
File without changes

1

必要ないプログラムが記述されていたので、その部分を削除しました。

2016/12/13 01:08

投稿

kusaka00
kusaka00

スコア55

title CHANGED
File without changes
body CHANGED
@@ -31,31 +31,7 @@
31
31
  <link rel="stylesheet" href="style.css" type="text/css">
32
32
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
33
33
  <script type="text/javascript">
34
- //追加ボタンで①高さと②幅と 枚の行を増やす
35
34
  $(function() {
36
- var NoData = '1';
37
- $(document).on('click', '#add_row', function(e) {
38
- NoData++;
39
- console.log(NoData);
40
- var tr_row = '' +
41
- '<tr>' +
42
- '<td width="150" rowspan="2">'+ NoData +'</td>' +
43
- '<td><span class="font12">①高さ ' +
44
- '<input name="'+ NoData +'つ目の画像のサイズ(高さmm)" type="text" id="サイズ(高さmm)3" size="10"> cm</span>&nbsp;</td>' +
45
- '<td rowspan="2"> <input name="'+ NoData +'つ目の画像の製作依頼枚数" type="text" id="サイズ(高さmm)3" size="10"> &nbsp;枚</td>' +
46
- '</tr>' +
47
- '<tr>' +
48
- '<td><span class="font12">②幅 ' +
49
- '<input name="'+ NoData +'つ目の画像のサイズ(幅mm)" type="text" id="サイズ(幅mm)8" size="10"> cm</span>&nbsp;</td>' +
50
- '</tr>';// 挿入する行のテンプレート
51
- var row_cnt = $("#DataPlus").children().length;// 現在のDOMで表示されているtrの数
52
- $(':hidden[name="row_length"]').val(parseInt(row_cnt) + 1);// input type=hiddenに格納されている行数を変更
53
- $(tr_row).appendTo($('#DataPlus'));// tbody末尾にテンプレートを挿入
54
- $('#DataPlus > tr:last > td > input').each(function() {
55
- var base_name = $(this).attr('name');
56
- $(this).attr('name', base_name + '[' + row_cnt + ']');
57
- });// input name部分を変更
58
- });
59
35
 
60
36
  if(! window.File){$('body').html('ご利用のブラウザでは、File APIをサポートしていません');}
61
37