Working on a custom choose file field with Javascript to control selected file content. Using states, if a file is selected, the field has a green color. If no file selected, it rolls back to default state.
A Pen by Donggeon Lee on CodePen.
Working on a custom choose file field with Javascript to control selected file content. Using states, if a file is selected, the field has a green color. If no file selected, it rolls back to default state.
A Pen by Donggeon Lee on CodePen.
| <script type="text/javascript" src="//code.jquery.com/jquery-1.10.2.min.js"></script> | |
| <div class="file-upload"> | |
| <div class="file-select"> | |
| <div class="file-select-button" id="fileName">Choose File</div> | |
| <div class="file-select-name" id="noFile">No file chosen...</div> | |
| <input type="file" name="chooseFile" id="chooseFile"> | |
| </div> | |
| </div> | |
| <!-- IGNORE --> | |
| <div class="copyright"> | |
| By <a href="http://fwpolice.com">the FWPolice</a>. | |
| </div> |
| $('#chooseFile').bind('change', function () { | |
| var filename = $("#chooseFile").val(); | |
| if (/^\s*$/.test(filename)) { | |
| $(".file-upload").removeClass('active'); | |
| $("#noFile").text("No file chosen..."); | |
| } | |
| else { | |
| $(".file-upload").addClass('active'); | |
| $("#noFile").text(filename.replace("C:\\fakepath\\", "")); | |
| } | |
| }); |
| /****** IGNORE ******/ | |
| body { | |
| width: 400px; | |
| margin: 100px auto; | |
| background-color: #f5f5f5; | |
| } | |
| .copyright { | |
| display:block; | |
| margin-top: 100px; | |
| text-align: center; | |
| font-family: Helvetica, Arial, sans-serif; | |
| font-size: 12px; | |
| font-weight: bold; | |
| text-transform: uppercase; | |
| } | |
| .copyright a{ | |
| text-decoration: none; | |
| color: #EE4E44; | |
| } | |
| /****** CODE ******/ | |
| .file-upload{display:block;text-align:center;font-family: Helvetica, Arial, sans-serif;font-size: 12px;} | |
| .file-upload .file-select{display:block;border: 2px solid #dce4ec;color: #34495e;cursor:pointer;height:40px;line-height:40px;text-align:left;background:#FFFFFF;overflow:hidden;position:relative;} | |
| .file-upload .file-select .file-select-button{background:#dce4ec;padding:0 10px;display:inline-block;height:40px;line-height:40px;} | |
| .file-upload .file-select .file-select-name{line-height:40px;display:inline-block;padding:0 10px;} | |
| .file-upload .file-select:hover{border-color:#34495e;transition:all .2s ease-in-out;-moz-transition:all .2s ease-in-out;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;} | |
| .file-upload .file-select:hover .file-select-button{background:#34495e;color:#FFFFFF;transition:all .2s ease-in-out;-moz-transition:all .2s ease-in-out;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;} | |
| .file-upload.active .file-select{border-color:#3fa46a;transition:all .2s ease-in-out;-moz-transition:all .2s ease-in-out;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;} | |
| .file-upload.active .file-select .file-select-button{background:#3fa46a;color:#FFFFFF;transition:all .2s ease-in-out;-moz-transition:all .2s ease-in-out;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;} | |
| .file-upload .file-select input[type=file]{z-index:100;cursor:pointer;position:absolute;height:100%;width:100%;top:0;left:0;opacity:0;filter:alpha(opacity=0);} | |
| .file-upload .file-select.file-select-disabled{opacity:0.65;} | |
| .file-upload .file-select.file-select-disabled:hover{cursor:default;display:block;border: 2px solid #dce4ec;color: #34495e;cursor:pointer;height:40px;line-height:40px;margin-top:5px;text-align:left;background:#FFFFFF;overflow:hidden;position:relative;} | |
| .file-upload .file-select.file-select-disabled:hover .file-select-button{background:#dce4ec;color:#666666;padding:0 10px;display:inline-block;height:40px;line-height:40px;} | |
| .file-upload .file-select.file-select-disabled:hover .file-select-name{line-height:40px;display:inline-block;padding:0 10px;} |