Как стать автором
Обновить

Комментарии 36

html 5 — среди нас
А можно сообщения об ошибках подверстать в CSS?
Я не исследовал этот вопрос, но думаю что ошибка ловится браузером по «event», а значит можно перехватить. Когда разберусь возможно ли это, я обязательно отпишусь, так как самому жутко интересно )
На сей момент такого события нет. Это работает по принципу атрибута title.., который так же на поддается стилизации.
Можно. Если вы начинаете задавать свои стили для эвентов через css, то уже стандартные не будут вылетать.

input:required:invalid {
input:focus:invalid {
input:required:valid {

и так далее
Круто, спасибо за пример.
Сообщения в данный момент стилизовать нельзя, но можно эмулировать проверку с помощью js, а текст сообщения и правила проверки писать в атрибут data-* (к примеру). + в Firefox'е можно сделать свои сообщения (вместо стандартных), ибо он поддерживает атрибут x-moz-errormessage.
Да, это возможно.
И почему это не придумали в html4?
Чего уж там, в HTML2!
Времена идут, потребности меняются, вот и не придумали. А может придумали, но не включили. Вы же видите: IE не поддерживает такой ввод, html5, css3, постоянно тормозит прогресс и вообще вселенское зло. А ведь IE — это все еще большинство.
Иногда стандарты не реагируют оперативно на меняющиеся потребности.
про IE мы все знаем. Но ведь надо же им чем-нибудь привлечь народ на релиз IE12? Вот и привлекут поддержкой :)
если бы не было проблем с IE (*руку на сердце* не только IE, все хороши), то работа верстальщиков стоила бы в разы меньше. Поэтому все дружно должны говорить «спасибо!».
Да ну конечно. Не могу представить заказчиков, которые реально осознают, что кроссбраузерность входит в стоимость разработки
ну она и так не особо много и стоит. Дам вам маленький совет, если позволите…
устраиваясь на работу не позиционируйте себя как «верстальщик» (слово, то какое, как будто из типографии сбежали), говорите что вы frontend программист и специалист по UI, а если это не так, то станьте им! да, таким людям платят
«Опера» бородатой версии поддерживала multiupload, потом выпилили: http://bolknote.ru/2009/11/30/~2322
Поддержка никуда не исчезала, просто все браузеры кроме оперы, отсылали в заголовках «multipart/form-data», хотя по стандарту, при наличии более 1 файла, нужно менять тип на «multipart/mixed»(как и делала Опера)
А серверы понимали лишь то, что поддерживалось большинством браузеров.

Однако в PHP это можно было решить, вытаскивая бинарные данные из ответа и разбивая вручную.
Только, как я понимаю, это не стало тогда популярным.

p.s.
возможно я вас не верно понял и говорил совсем не про то -))
хм… действительно, извиняюсь.
В вашей ссылке, как раз то, что я описал -))

Но, разве кто-то из Оперы это выпиливал?
Работало же всегда.
Поддержка была в «Опере» 3.5—6.05, потом исчезла до 9-й версии.
Firebug почему-то показывает именно multiple=«true»
К сожалению не могу глянуть в Firebug (Firefox 6a2 стоит), но скорее всего это из-за того, что показывается html5, а не xhtml5. В html5 можно писать хоть multiple / multiple=«multiple» / multiple=«true», а в xhtml5 только multiple=«multiple».
Жаль, что эти прелести не избавляют нас от необходимости валидации на стороне сервера.
ничего не избавит нас от валидации на стороне сервера
getAsText: тут я каюсь, до сих пор не разобрался что это, и буду очень благодарен если разъясните мне.


www.php.net/manual/en/function.fopen.php

Note:

Different operating system families have different line-ending conventions. When you write a text file and want to insert a line break, you need to use the correct line-ending character(s) for your operating system. Unix based systems use \n as the line ending character, Windows based systems use \r\n as the line ending characters and Macintosh based systems use \r as the line ending character.

If you use the wrong line ending characters when writing your files, you might find that other applications that open those files will «look funny».

Windows offers a text-mode translation flag ('t') which will transparently translate \n to \r\n when working with the file. In contrast, you can also use 'b' to force binary mode, which will not translate your data. To use these flags, specify either 'b' or 't' as the last character of the mode parameter.

The default translation mode depends on the SAPI and version of PHP that you are using, so you are encouraged to always specify the appropriate flag for portability reasons. You should use the 't' mode if you are working with plain-text files and you use \n to delimit your line endings in your script, but expect your files to be readable with applications such as notepad. You should use the 'b' in all other cases.

If you do not specify the 'b' flag when working with binary files, you may experience strange problems with your data, including broken image files and strange problems with \r\n characters.


Думаю, что логика у getAsBinary и у getAsText аналогична.
developer.mozilla.org/en/DOM/File.getAsText — «Returns the file's contents as a DOMString in which the file's data is interpreted as text using a given encoding».
Обратите внимание на name, мы явно в нем указали, что это массив.

А название параметра тут имеет какое-то значение? Всегда думал, что "[]" — это чисто пхпшная фишка, а браузеру на нее пофиг.
Если вы имеете в виду js, то нужен ли ему вообще атрибут name? :)
Нет, я имею в виду браузер — влияет ли [] на то, что он шлет при сабмите (очевидно, за исключением самого значения параметра name).

Если не влияет, то это пхпшная штука, получается: преобразовывать параметр в массив, только если у него есть [] в конце названия — это, насколько я знаю, соглашение для удобства серверной обработки данных конкретно в php, а не какой-то стандарт.
Если так, то видимо вы правы, ибо в стандарте я ничего об этом не смог найти.
В PHP после сабмита приходит не совсем обычный массив, для переделки его в более привычный вид я написал небольшую функцию
function multiple(array $_files)
{
	foreach($_files as $name=>$file){
		if(is_array($file['name'])){
			$count = count($file['name']);
			for($i=0; $i < $count; $i++){
				$files[$name][$i] = array(
					'name'     => $file['name'][$i],
					'type'     => $file['type'][$i],
					'tmp_name' => $file['tmp_name'][$i],
					'error'    => $file['error'][$i],
					'size'     => $file['size'][$i],
				);
			}
		}else{
			$files[$name] = $file;
		}
	}
	return $files;
}
Может в этой функции перед использованием стоит объявить массив $files?
Да верно, забыл. Спасибо подправлю у себя.
НЛО прилетело и опубликовало эту надпись здесь
Если в нее отправить не весь массив $_FILES, а только $_FILES[attaches][image], то будет все нормально.
Хотя выглядит этот как то кривовато.
Зарегистрируйтесь на Хабре , чтобы оставить комментарий

Публикации

Истории