jQueryを使用してクリックイベントを設定したいのですが上手くいきません。
画像を選択できる様にしているinput部分の装飾をCSSで行い、ファイル名の表示をjQueryで設定しています。
ファイルを選択してファイル名を表示させることはできるのですが、×ボタンをクリックした際にファイル名の表示を消すことができません。
HTML
1<div id="btn">画像を選択</div> 2<table class="imgtable"> 3 <tbody> 4 <tr id="userfile_item"> 5 <td class="image_button"> 6 <input type="file" name="filename" id="files"> 7 <span data-mwform-file-derete="filename" class="mwform-file-delete" style="visibilyty: visible;">×</span> 8 </td> 9 <td class="image_box"> 10 <input id="filename" type="text" name="test1" placeholder="選択されていません" readonly> 11 </td> 12 </tr> 13 </tbody> 14</table>
CSS
1#btn{ 2 width: 120px; 3 height: 30px; 4 background-color: rgb(131, 131, 131); 5 border-radius: 50px; 6 position: absolute; 7 padding: 5px 14px; 8 left: 13vw; 9 cursor: pointer; 10 color: white; 11 justify-content: center; 12 align-items: center; 13 display: flex; 14 z-index: 10; 15} 16 17.mwform-file-delete { 18 padding: 0; 19 top: 11px; 20 left: 78px; 21 position: absolute; 22} 23 24.image_box{ 25 display: flex; 26 position: absolute; 27 right: -35px; 28 top: -1px; 29 width: 90%; 30 margin: 0; 31} 32 33#filename{ 34 display: inline-block; 35 36 width: 90%; 37 height: 30px; 38 background-color: #EFF7FF; 39 border-radius: 6px; 40 border-color: #707070; 41 border-width: thin; 42 padding: 5px; 43 pointer-events: none; 44}
jQuery
1$(function() { 2 $('#files').css({ 3 'position': 'absolute', 4 'top': '-9999px' 5 }).change(function() { 6 var val = $(this).val(); 7 var path = val.replace(/\/g, '/'); 8 var match = path.lastIndexOf('/'); 9 $('#filename').css("display","inline-block"); 10 $('#filename').val(match !== -1 ? val.substring(match + 1) : val); 11 }); 12 13 $('#filename').bind('keyup, keydown, keypress', function() { 14 return false; 15 }); 16 $('#filename, #btn').click(function() { 17 $('#files').trigger('click'); 18 }); 19 20 let element = $('span'); 21 element.attr('id', 'imgbutton'); 22 $('#imgbutton').css({ 23 }).change(function() { 24 $("#filename").val("選択されていません"); 25 }) 26 27});
ファイルを選択し、選択したファイル名をfilenameに表示し、同時に×ボタンを表示するところまでは上記コードでできていますが、問題の×ボタンをクリックした際にfilenameに表示されているファイル名を消すことができません。
エラーは出ていない様なのですが、
jQuery
1 $('#imgbutton').css({ 2 }).change(function() { 3 $("#filename").val("選択されていません"); 4 })
の部分が反応しません。
この部分ではfilenameのvalを変更しようとしていますが、filesのファイル名部分がファイル選択時だけでなく×ボタン選択時もfilenameに反応されれば問題ありません。
この部分を.clickで指定しても変化はありませんでした。
どうしたら想定どおりの動作をするのでしょうか?
お手数をおかけいたしますが、どなたかご教授頂けますと助かります。
回答1件
あなたの回答
tips
プレビュー