<form enctype="multipart/form-data" id="form"> <!-- ( )--> <input type="hidden" name="thm" data-title="" value=" "> <div class="radio-list"> <div class="radio"> <input type="radio" name="radiobtn" value="" data-title=" " id="radio1" class="radio__input" checked> <label for="radio1" class="radio__label"> </label> </div> <div class="radio"> <input type="radio" name="radiobtn" value="" data-title=" " id="radio2" class="radio__input"> <label for="radio2" class="radio__label"> </label> </div> </div> <div class="checkbox-list"> <div class="checkbox"> <input type="checkbox" name="checkboxbtn" value="" data-title=" 2" id="checkbox1" class="checkbox__input" checked> <label for="checkbox1" class="checkbox__label"> </label> </div> <div class="checkbox"> <input type="checkbox" name="checkboxbtn" value="" data-title=" 2" id="checkbox2" class="checkbox__input"> <label for="checkbox2" class="checkbox__label"> </label> </div> </div> <input type="text" name="name" data-title=" " class="input-text"> <textarea name="textarea" data-title="" class="textarea"></textarea> <!-- input --> <input class="input-file js_file_check" type="file" name="file[]" data-title="" multiple="" accept="image"> <!-- --> <ul class="js_file_list file-list"> </ul> <!-- --> <button class="js_btn_submit"> </button> </form>
var form = form; // function formSend(formObject, form) { $.ajax({ type: "POST", url: 'form-handler.php', dataType: 'json', contentType: false, processData: false, data: formObject, success: function() { $(form).trigger('reset'); // alert('Success'); } }); };
function formData_assembly(form) { var formSendAll = new FormData(), // FormData form_arr = $(form).find(':input,select,textarea').serializeArray(), // formdata = {}; // for (var i = 0; i < form_arr.length; i++) { if (form_arr[i].value.length > 0) { // var current_input = $(form).find('input[name=' + form_arr[i].name + '],select[name=' + form_arr[i].name + '],textarea[name=' + form_arr[i].name + ']'), value_arr = {}; // + var title = $(current_input).attr('data-title'); // if ($(current_input).attr('type') != 'hidden') { // value_arr['value'] = form_arr[i].value; value_arr['title'] = title; formdata[form_arr[i].name] = value_arr; } else { formSendAll.append(form_arr[i].name, form_arr[i].value); // } } } formdata = JSON.stringify(formdata); formSendAll.append('formData', formdata); // formdata // file if ($(form).find('input[type=file]').hasClass('js_file_check')) { // input type file var current_input = $(form).find('input[type=file]'); if ($(current_input).val().length > 0) { // $('.js_file_list li').each(function() { var list_file_name = $(this).find('span').text(); for (var k = 0; k < $(current_input)[0].files.length; k++) { if (list_file_name == $(current_input)[0].files[k].name) { // formSendAll.append($(current_input).attr('name'), $(current_input)[0].files[k]); // } } }) } } formSend(formSendAll, form); } formData_assembly(form);
function submit_function(form){...}
$('.js_btn_submit').click(function (e) { e.preventDefault(); var current_form = $(this).closest('form');// submit_function(current_form); })
function checkFile(){ var inputs = document.getElementsByClassName('js_file_check'); for (var i = 0; i < inputs.length; i++) { inputs[i].addEventListener('change', handleFileSelect, false); } } checkFile();
var reader; function abortRead() { reader.abort(); } function errorHandler(evt) { switch (evt.target.error.code) { case evt.target.error.NOT_FOUND_ERR: alert('File Not Found!'); break; case evt.target.error.NOT_READABLE_ERR: alert('File is not readable'); break; case evt.target.error.ABORT_ERR: break; // noop default: alert('An error occurred reading this file.'); }; }
function handleFileSelect(evt) { var thisInput = $(this); //input type file for (var i = 0; i < thisInput[0].files.length; i++) { // reader_file(thisInput[0].files[i]); // } }
function reader_file(file) { var reader = new FileReader(), fileName = file.name; reader.onerror = errorHandler; // $('.js_file_list').append('<li><span>' + fileName + '</span><div class="js_file_remove file_remove"></div><div class="progress-bar js_progress_bar"></div></li>'); // reader.onabort = function(e) { alert('File read cancelled'); }; reader.onload = function(e) { // //- } reader.onprogress = function(event) { // if (event.lengthComputable) { var percent = parseInt(((event.loaded / event.total) * 100), 10); $('.js_progress_bar').css('width', percent + '%'); } } if (reader.readAsBinaryString === undefined) { // readAsBinaryString reader.readAsBinaryString = function(fileData) { var binary = "", pt = this, reader = new FileReader(); reader.onload = function(e) { var bytes = new Uint8Array(reader.result); var length = bytes.byteLength; for (var i = 0; i < length; i++) { binary += String.fromCharCode(bytes[i]); } pt.content = binary; $(pt).trigger('onload'); } } reader.readAsArrayBuffer(file); } else { reader.readAsBinaryString(file); } }
$(document).on('click', '.js_file_remove', function() { var list_item = $(this).closest('li'); $(list_item).remove(); });
Source: https://habr.com/ru/post/325340/
All Articles