前提・実現したいこと
ここに質問の内容を詳しく書いてください。
初心者です。
keras + flask で画像をwebにアップロードする機能を実装していました。
その際、jqueryでimgタグのsrcの値を取得したかったのですが、取得できておらず、原因が分からなかったたため投稿しました。
下記コードで取得しようとしたのですが、取得できていないようです。
jQuery
1var src = $('#img1').attr('src');
srcの値を取得できない原因と、その対策を教えていただければと思います。
該当のソースコード
HTML
1<!DOCTYPE! html> 2<html lang="ja"> 3 <head> 4 <meta charset="utf-8"> 5 <title>サンプル</title> 6 <script type=text/javascript src="/static/js/jquery-3.3.1.min.js"></script> 7 <script type = text/javascript src="/static/js/text.js"></script> 8 <link rel="stylesheet" type="text/css" href="/static/css/style.css"> 9 10 11 </head> 12 <body> 13 <div id = "title"> 14 <h1>タイトル</h1> 15 </div> 16 <form method=post enctype=multipart/form-data> 17 18 <img id = 'img1' style="width:300px;height:300px;"> 19 <br> 20 <input type='file' id='myfile' name="file"> 21 <input type="submit" id = 'submit' value="Upload"> 22 23 </form> 24 <p class="lead"> 25 {% if result %} 26 判定結果は、{{ result }} 27 {% else %} 28 {% endif %} 29 </p> 30 </body> 31</html>
jQuery
1$(function(){ 2 $('#myfile').change(function(e){ 3 //ファイルオブジェクトを取得する 4 var file = e.target.files[0]; 5 var reader = new FileReader(); 6 7 //画像でない場合は処理終了 8 if(file.type.indexOf("image") <0){ 9 alert("画像ファイルを指定してください"); 10 return false; 11 }; 12 13 reader.onload = (function(file){ 14 return function(e){ 15 $("#img1").attr("src", e.target.result); 16 $("#img1").attr("title", file.name); 17 } 18 })(file); 19 reader.readAsDataURL(file); 20 21 var src = $('#img1').attr('src'); 22 console.log('src'); 23 24 25 }); 26 27 28// もしid = #img1にsrcがないときsubmitしたときはalertを返す機能 29// var src = $('#img1').attr('src'); 30// $('#submit').click(function(){ 31// alert(src); 32// return false; 33// 34// }); 35 36}); 37
補足情報
最終的にformに画像がアップロードされていなければ、alertで「画像が入っていない」と返して、return falseでイベントを終了する機能を作りたいと思っていました。
###追記3/15
読み込み後の結果は、onloadイベントで得られるようなので、下記のように書き換えたところ、srcの値を得ることができました。
javascript
1$(function(){ 2 $('#myfile').change(function(e){ 3 //ファイルオブジェクトを取得する 4 var file = e.target.files[0]; 5 var reader = new FileReader(); 6 7 //画像でない場合は処理終了 8 if(file.type.indexOf("image") <0){ 9 alert("画像ファイルを指定してください"); 10 return false; 11 }; 12 13 reader.onload = (function(file){ 14 return function(e){ 15 $("#img1").attr("src", e.target.result); 16 $("#img1").attr("title", file.name); 17 18 var src = $("#img1").attr("src"); 19 console.log(src); 20 } 21 })(file); 22 reader.readAsDataURL(file); 23 24 25 26 }); 27 28});
が最終的に私が行いたいsrcに値が入っていない場合、alertしてイベントを終了しようとするコード(下記)を書いてみたものの、alertは実行されませんでした。
javascript
1$(function(){ 2 $('#myfile').change(function(e){ 3 //ファイルオブジェクトを取得する 4 var file = e.target.files[0]; 5 var reader = new FileReader(); 6 7 //画像でない場合は処理終了 8 if(file.type.indexOf("image") <0){ 9 alert("画像ファイルを指定してください"); 10 return false; 11 }; 12 13 reader.onload = (function(file){ 14 return function(e){ 15 $("#img1").attr("src", e.target.result); 16 $("#img1").attr("title", file.name); 17 18 var src = $("#img1").attr("src"); 19 $('#submit').click(function(){ 20 if(src === ""){ 21 alert("画像をアップロードしてください"); 22 return false; 23 } 24 25 }); 26 } 27 })(file); 28 reader.readAsDataURL(file); 29 30 31 32 }); 33 34});
これは何が問題なのでしょうか?
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/03/15 04:18
2019/03/15 06:54