Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Нужно уладить недопонимание с <form> (https://javascript.ru/forum/misc/61102-nuzhno-uladit-nedoponimanie-s-form.html)

AciDWarrioR 04.02.2016 10:49

Нужно уладить недопонимание с <form>
 
Всем привет!
Ситуация следующая:
1) Необходимо предоставить доступ для скачивания пользователю. Пользователю, после введенных им критериев поисков, выдается таблица со списком снимков. При нажатие иконки скачать ему раскрывается полный список файлов относящихся к этому снимку (здесь как и сам снимок, снимок с геопривязкой, метаданные и бла бла бла). Также во второй колонки для файлов появляются чекбоксы для выбора какие файлы нужны. Третья колонка для информации по файлам, которые весят сравнительно неплохо выдан размер и снизу этой колонки появляется кнопка скачать. Так вот, у меня получается, что form разделяется на два, на checkbox и submit.
2) Нужно все сделать ajax'ом, но также необходима проверка на выбор по крайней мере одного файла. Вот как сделать эту проверку без перезагрузки страницы?
КодЪ:
function showFIles(event){
				tab = document.getElementsByTagName("tbody");
				if($("tr").hasClass('substring')){
					$(".substring").remove();
					
				}
				var name = event.target.parentNode.parentNode.firstChild.innerHTML;
				var row = event.target.parentNode.parentNode.rowIndex+1;
				
				var index;
				for(i=0; i<arrayPHP.length; i++){
					var indexN = arrayPHP[i].filename_raw.indexOf(".");
					var nameRaw = arrayPHP[i].filename_raw.substring(0,indexN);
					if(nameRaw == name){
						index = i;
						break;
					}
				}
				var indexSR = arrayPHP[index].size_raw.indexOf(".");
				var sizeRaw = arrayPHP[index].size_raw.substring(0,indexSR+3);
				var indexSL = arrayPHP[index].size_l1b.indexOf(".");
				var sizeL = arrayPHP[index].size_l1b.substring(0,indexSL+3);
				var newCell1 = document.createElement("td");
				var newCell2 = document.createElement("td");
				var newCell3 = document.createElement("td");
				newCell1.innerHTML = arrayPHP[index].filename_raw +"<p>" +arrayPHP[index].filename_l1b + "</p><p>" +arrayPHP[index].filename_parametr + "</p><p>" + arrayPHP[index].file_txt +"</p>";
				newCell2.innerHTML = "<form method='POST' name='download'onsubmit='downloadFile()'><p style=margin:0px;><input type='checkbox' value='check' name='rawFile'></p><p style=margin:0px;><input type='checkbox' value='check' name='l1bFile'></p><p style=margin:0px;><input type='checkbox' value='check' name='paramFile'</p><p style=margin:0px;><input type='checkbox' value='check' name='txtFile'></p>";
				newCell3.innerHTML = sizeRaw +" Mb"  +"<p>" +sizeL + " Mb</p><p><input type='submit' value='Скачать' class='b1'></form></p>"; 
				var newRow = tab[0].insertRow(row);
				newRow.classList.add("substring");
				newRow.appendChild(newCell1);
				newRow.appendChild(newCell2);
				newRow.appendChild(newCell3);
			}

			function downloadFile(){
				if(document.download.rawFile.checked==false && document.download.l1bFile.checked == false && document.download.paramFile.checked == false && document.download.txtFile.checked == false){
					alert("Выберите файл для скачивания");
					return false;
				}
			}
		</script>

AciDWarrioR 05.02.2016 08:40

Никто не может помочь ?

Dilettante_Pro 05.02.2016 10:12

AciDWarrioR,
Цитата:

Сообщение от AciDWarrioR
function downloadFile(){
                if(document.download.rawFile.checked==false && document.download.l1bFile.checked == false && document.download.paramFile.checked == false && document.download.txtFile.checked == false){
                    alert("Выберите файл для скачивания");
                    return false;
                }
            }

У вас в этой функции делается только проверка, что ничего не выбрано, делается сообщение и возврат.
Ну так добавьте ветку else, если есть выбранные файлы, и в ней доделайте все, что нужно для скачивания

AciDWarrioR 05.02.2016 14:02

Dilettante_Pro,
Да этот вопрос был про между прочим, там итак понятно все через ajax.
А основную проблему сделал по другому. Когда человек вторично нажимает на иконку скачать срабатывает функция скачать файлы. В общем как то так.


Часовой пояс GMT +3, время: 04:27.