Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Отмена события (https://javascript.ru/forum/events/58923-otmena-sobytiya.html)

artiom4356 18.10.2015 08:58

Отмена события
 
В общем есть такая проблема. То есть при сробатывании события отправки формы скрипт должен проверить какой или какие файлы были загружены(сколько файлов, их тип ну их многое другое). Пытался по разному сделать например так. Но ничего не работает.
<script>
	$('#Otpravka234134').submit(function(e){			  
			   var a=document.getElementById('ava').files;	   
	if (a.length!=1){
e.preventDefault();
		return false;
	alert("Загрузите адин файл. Тип загружаемого файла"+a[0].type);
	
	}
	}
	
			  </script>

laimas 18.10.2015 15:50

Цитата:

Сообщение от artiom4356
Загрузите адин файл.

Правильно пишется - адын файл.

Если a.length != 1, то зачем разрешать загрузку многих соответствующим полем, и зачем "... или какие файлы были загружены(сколько файлов, их тип ну их многое другое)."?

artiom4356 18.10.2015 19:03

Цитата:

Сообщение от laimas (Сообщение 392307)
Правильно пишется - адын файл.

Если a.length != 1, то зачем разрешать загрузку многих соответствующим полем, и зачем "... или какие файлы были загружены(сколько файлов, их тип ну их многое другое)."?

Если a.length != 1 то есть равно любому другом числу кроме одного то я отменяю события. Ну а в проивном случии пользователь загрузил 1 файл и условие не выполнитца..... Только я не понемаю как отменить это самое событие отправки. И на счёт поля. Это HTML и я к нему не имею доступа на прямую. Мне нужно написать скрипт который бы работа не завсимо через какой элемент формы идёт загрузка. А на счёт типов загружаемых фалов и прочего это я поспешил... просто чуть позже хочу добавить проверку на тип вот и всё.

laimas 18.10.2015 19:32

Цитата:

Сообщение от artiom4356
то есть равно любому другом числу кроме одного то я отменяю события. Ну а в проивном случии пользователь загрузил 1 файл и условие не выполнитца.....


Каким образом пользователь сможет загрузить несколько файлов, если ему этого не разрешать? Одним полем file загрузить несколько файлов можно только собственноручно прописав в нем multiple, и только в новых версиях браузеров, для старых с помощью нескольких таких полей?

artiom4356 18.10.2015 22:18

Цитата:

Сообщение от laimas (Сообщение 392329)
Каким образом пользователь сможет загрузить несколько файлов, если ему этого не разрешать? Одним полем file загрузить несколько файлов можно только собственноручно прописав в нем multiple, и только в новых версиях браузеров, для старых с помощью нескольких таких полей?

Даже если убрать это условие.... событие серовно не отменяеца.

laimas 19.10.2015 04:36

Вы где русский учили? :)

Отметь отправку формы:
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script> 
$(function() {
    $('form').submit(function(e) {
        e.preventDefault();
        $('div').text('Value as is not sent')
    })
});
</script>     
</head> 
<body>
<form>
<input name="as" value="1" />
<button>Send</button></form>
<div></div>
</body> 
</html>


Может пояснить конкретней чего вы хотите сделать? Но с учетом того, что проверять загрузку файлов более одного при невозможности загрузить более не имеет смысла. Таковую проверку нужно делать на сервере, и зная, что клиент может отправить только один файл, при их большем количестве делать вывод, что форма левая.

artiom4356 19.10.2015 06:02

Да к стати. Хотелось бы спросить что если мне допустим надо загрузить какую ни будь аватарку ну или просто картинку. Но прежде чем отпровлять на сервер мне надо проверить расширение этого самого изображения и его размер. Размер в смысле ширину и высоту. Как такое можно сделать?? Желательно без cavans

laimas 19.10.2015 06:48

Нужно обрабатывать событие onchange поля ввода:
$(function() {
    $('selector').change(function() {
        var im = new Image(), type = this.files[0].type;
        im.onload = function() {
            alert('Type: '+type+'\n'+'Width: '+this.width+'\n'+'Height: '+this.height)
        }
        im.src = this.value
    })
});

В IE6 тип можно было получить и с помощью свойства mimeType.

artiom4356 19.10.2015 13:28

Не работает. alert не работает.... такое ощущение что события и вовсе нет... Библиотека сразу говорю подключена Вот код
<form id="ka">
<input type="file" id="filess" name="files[]"/>
<button type="submit">
</form>

<script>
$(function() {
    $('#filess').change(function() {
        var im = new Image(), type = this.files[0].type;
        im.onload = function() {
            alert('Type: '+type+'\n'+'Width: '+this.width+'\n'+'Height: '+this.height)
        }
        im.src = this.value
    })
});
</script>

EmperioAf 19.10.2015 14:10

Цитата:

Сообщение от artiom4356
Библиотека сразу говорю подключена

попробуйте обернуть ваш JQuery код:
(function($){
//ваш jQuery код
}(jQuery));


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