Javascript-форум (https://javascript.ru/forum/)
-   Internet Explorer (https://javascript.ru/forum/css-html-internet-explorer/)
-   -   Стилизация полей input=file (https://javascript.ru/forum/css-html-internet-explorer/44581-stilizaciya-polejj-input%3Dfile.html)

padurets 25.01.2014 01:31

Стилизация полей input[type=file]
 
Друзья, прошу помощи.

Необходимо стилизовать поля прикрепления файлов. Написал следущее:

jQuery(function (){
		var wrap ="<div class='field-file'></div>";
		var fieldText = "<div class='field-text-pad'></div>";
		var fileNotFound = "<span>Файл не выбран</span>";
		var fieldExplore = "<div class='field-explore-pad'>Обзор</div>";

		jQuery(".form-file").wrap(wrap).wrap(fieldText);
		jQuery(".field-text-pad").append(fileNotFound+fieldExplore);

		jQuery(".field-explore-pad").click( function(){
			var findInput = jQuery(this).parent(".field-text-pad").find("input[type='file']");

			jQuery(this).parent(".field-text-pad").find("input[type='file']").click();

			jQuery(findInput).change( function(){
				var getFileName = jQuery(this).val().split('\\').pop();;
				jQuery(this).parent(".field-text-pad").find("span").html(getFileName);
			})
		});
	})

Работает как требуется, но в ie, после добавления (выбора) файла, его имя не копируется в соответствующее поле. Подскажите, как пофиксить?

danik.js 25.01.2014 07:08

Цитата:

Сообщение от padurets
Подскажите, как пофиксить?

F12 жми, там есть отладчик. Ставь точки останова, наблюдай ошибки и тд.
Так же не стоит навешивать мильён обработчиков change (каждый раз по клику)

Вместо $(this).val() используй this.value. Вместо jQuery используй $. Вместо getFileName - fileName. Хотя это все незначимые проблемы.

padurets 25.01.2014 14:18

Цитата:

Сообщение от danik.js (Сообщение 293941)
Вместо jQuery используй $.

Просто код пишется под друпал

danik.js 25.01.2014 14:48

Цитата:

Сообщение от padurets
Просто код пишется под друпал

И че дальше? Занят символ в глобальном пространстве имен? Прокинь в анонимную функцию как аргумент:
(function($){
    alert($ === jQuery);
})(jQuery);


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