項目中需要在前端實現:
- 用戶輸入數字n,動態生成n個元素,刪除n,自動清空n個元素(如圖一);
- 用戶輸入數字n,失焦生成n個元素,再聚焦修改n,自動清空n個元素(如圖二);
圖一:
圖二:
需求一實現方式:
1 <input type="number" placeholder="請輸入圖片數量" id="img_num" name="img_num" />張 2 3 <li id="img_upload"></li> 4 5 <script> 6 $('#img_num').bind('input propertychange',function() { 7 $("#img_upload").empty(); 8 var text = $('input[name="img_num"]').val(); 9 //console.log(text); 10 for (let i =1;i<=text;++i){ 11 $("<li id='preview_"+i+"'><b>*</b> <span>圖片" 12 +i+ 13 ": </span><span ><input name='img[]' type='file' id='imgFile_"+i+ 14 "' accept='image/*' /></span> </li>").appendTo($('#img_upload')); 15 } 16 }); 17 </script>
需求二實現方式:
1 <input type="number" placeholder="請輸入圖片數量" id="img_num" name="img_num" />張 2 <li id="img_upload"></li> 3 <script> 4 5 // 聚焦清空 6 $('#img_num').focus(function(){ 7 $('#img_upload').empty(); 8 }) 9 10 // 失焦寫入;動態生成input上傳框 11 12 $('#img_num').blur(function() { 13 $("#img_upload").empty(); 14 var text = $('input[name="img_num"]').val(); 15 console.log(text); 16 for (let i =1;i<=text;++i){ 17 $("<li id='preview_"+i+"'><b>*</b> <span>圖片" 18 +i+ 19 ": </span><span ><input name='img[]' type='file' id='imgFile_"+i+ 20 "' accept='image/*' /></span> </li>").appendTo($('#img_upload')); 21 } 22 }); 23 </script>
針對關鍵點總結:
事件方法名 | 用法 | 釋義 |
bind | el.bind(“oninput,propertychange”,function(){})① |
綁定元素,監聽元素 |
focus | el.blur(function(){}) |
input框聚焦時執行 |
blur | el.blur(function(){}) |
input框失焦時執行 |
備注:
①:bind中 oninput 和 propertychange,都是事件對象,是在值改變時立即觸發;只是后者是用以替代oninput在IE9以下的不兼容性;另:onchange是在值改變后失去焦點才觸發,並且可以用在非輸入框中,如:select等
相關鏈接:https://www.cnblogs.com/LHYwin/p/6136256.html.bind('input propertychange'