前提・実現したいこと
お問い合わせフォームで画像ファイルのアップロード時に容量と拡張子でバリデーションをし、submitでエラー時に先に進めないようにしたいのですが、エラーは表示するのですが、submitが制御できせん。
jqueryのスコープの理解ができていなく、「var result」の値がうまく行っていないと思うのですが、教えていただけないでしょうか。
ソース
HTML
1<form action="carbon_confirm.html" method="post" id="form-name"> 2 <div class="form__main__list"> 3 <dl> 4 <dt><p class="icon--req">画像の添付</p></dt> 5 <dd class="formType--file"> 6 <div class="upLoad--btn">ファイルを選択 7 <input type="file" name="画像の添付" id="file" onchange="uv.style.display='inline-block'; uv.value = this.value;"> 8 </div> 9 <div class="upLoad--value"> 10 <input type="text" id="uv" class="uploadValue" disabled value="選択されていません"/> 11 </div> 12 </dd> 13 </dl> 14 <div class="form__main__list__note" id="file__note"> 15 <p>データ形式 : jpg / psd / ai</p> 16 <p>データサイズ : 5MB以下</p> 17 </div> 18 <div class="fileError--size">※ データサイズは5MB以下にしてください</div> 19 <div class="fileError--name">※ データ形式をご確認ください</div> 20 </div> 21 22 <div class="form__main__btn"> 23 <span><input type="submit" value="入力内容を確認する"></span> 24 </div> 25</form>
jquery
1$(function(){ 2 var result = true; 3 4 $('input:submit').click(function(){ 5 if(!result == true){ 6 return false; 7 } 8 }); 9 10 $('#file').bind('change', function() { 11 var imgSize = this.files[0].size; 12 var imgName = this.files[0].name; 13 console.log(imgSize); 14 if(imgSize >= 5242880){ //5MB: 5242880 15 $(".fileError--size").addClass("checked"); 16 return false; 17 }else{ 18 $(".fileError--size").removeClass("checked"); 19 } 20 if (!imgName.match(/.(jpg|psd|ai)$/i)){ 21 $(".fileError--name").addClass("checked"); 22 return false; 23 } 24 }); 25 return result; 26});
css
1.fileError--name, 2.fileError--size{ 3 width: auto; 4 min-width: 120px; 5 padding: 7px 13px 7px; 6 font-size: 1.2rem; 7 line-height: 1.5; 8 color: #FFFFFF; 9 background-color: #ee0101; 10 display: none; 11} 12.fileError--name.checked, 13.fileError--size.checked{ 14 display: inline-block; 15}
回答2件
あなたの回答
tips
プレビュー