Имя: Пароль:
IT
Веб-мастеринг
jQuery+очистка <input type='file' />
0 kitt
 
21.07.10
11:15
Опытные операводы, нужна помощь.
Есть трабла - не хочет очищатся значение input:file не хочет очищатся посредством jQuery
вот код


<!DOCTYPE html>
<html>
<head>
 <script src="http://code.jquery.com/jquery-latest.min.js"></script>
</head>
<body>
   <p>
   <input id='f1' name='file1' type='file' />
   </p>
   <p>
       <input id='b1' name='button1' type='button' value='test file!' />
   </p>

   

   <script>
       $(function()
                   {
                       $('#b1').click(function(arg){
                            $('#f1').val('');
                           //Пробовал по всякому
                           //$('#f1').val(false);
                           //$('#f1').val(undefined);
                           //$('#f1').val(null);
                           //$('#f1').attr('value','');
                           //$('#f1').attr('value',undefined);
                           //$('#f1').attr('value',null);

                           
                       });
                   }
           );
               
   </script>
</body>
</html>


выручайте!
ПС в фф3 работает, в ie6 - нет. Пока больше нет возможности проверить в других браузерах
1 sergeante
 
21.07.10
11:26
В Chrome работает.
2 sergeante
 
21.07.10
11:36
попробуй вместо
>> jQuery('#f1').val('');

это
>> document.getElementById('f1').value = '';
3 kitt
 
21.07.10
19:29
(2) ну по идее jQuery должна делать то же самое
4 kitt
 
21.07.10
19:32
>> document.getElementById('f1').value = '';
та же история. В файрфоксе работает, в опере нет(
5 kitt
 
21.07.10
19:40
$('#f1').attr('type','text').val('').attr('type','file');
//Ошибка: uncaught exception: type property can't be changed

Хитрость не прошла
6 woody woodpecker
 
21.07.10
19:52
$("#f1").attr("value","''");
7 kitt
 
21.07.10
19:58
(6) см. (0)
//Пробовал по всякому
                          //$('#f1').val(false);
                          //$('#f1').val(undefined);
                          //$('#f1').val(null);
                          //$('#f1').attr('value','');
                          //$('#f1').attr('value',undefined);
                          //$('#f1').attr('value',null);
8 Asmody
 
21.07.10
20:03
val() method should not be used to set values to input type File, it will not work.
9 Asmody
 
21.07.10
20:04
10 kitt
 
21.07.10
20:05
блин, в файрфоксе офигенная уязвимость получается. Скрипт веб страницы может отправить на сервер любой файл, к которому есть доступ на чтение.
11 kitt
 
21.07.10
20:15
а, не, при попытке установить значение и отправить форму из скрипта выдает
Ошибка: uncaught exception: [Exception... "Security error"  code: "1000" nsresult: "0x805303e8 (NS_ERROR_DOM_SECURITY_ERR)"  location: "http://code.jquery.com/jquery-latest.min.js Line: 47"]
12 kitt
 
21.07.10
20:21
(9)
document.getElementById('f1').innerHTML = document.getElementById('f1').innerHTML;

в опере всё равно не робит
13 kitt
 
21.07.10
20:22
хотя на сайте указаном в качестве примера, в опере работает, буду разбираться
14 kitt
 
21.07.10
20:35
короче получилось вот так
$('#f1').parent().html($('#f1').parent().html());

всем спасибо!
15 kitt
 
21.07.10
20:47
только получается один фиг, не установка значения, а удаление элемента и вставка нового, события при этом тоже убиваются.
16 kitt
 
21.07.10
21:02
собственно хотел, для компактности кода прописать что то вроде $('#f1').after($('#f1').clone(true)); для мультизагрузки файлов.
Хотел чтобы вместе с input:file скопировался обработчик change и не пришлось его дополнительно присваивать. Но всместе с обработчиком копируются данные из поля, и убрать их можно только убив элемент вместе с событиями.
Программист всегда исправляет последнюю ошибку.