|
|
|
| Собственно вопрос в чем, есть несколько полей ввода файлов, к ним делаю функцию очистки, чтобы пользователь заполнял их строго по порядку.
<div><input class="inp" name="n1" type="file" /> <img src="img.jpg" class="im"></div>
<div><input class="inp" name="n2" type="file" /> <img src="img.jpg" class="im"></div>
<div><input class="inp" name="n3" type="file" /> <img src="img.jpg" class="im"></div>
...
|
По умолчанию (при открытии страницы) активно только первое поле ввода, остальные disabled При вводе первого файла, срабатывает первая часть кода:
$(".inp").click( function(){
$(this).change( function(){
if($(this).attr("value") != ""){
$(this).parent().next().children(".inp").removeAttr("disabled");
}
});
});
|
и открывает второй input. При нажатии на изображение очистки, соответственно поле очищается (перезаписывается, по другому не реал), и если следующий input за очищаемым полем активный и пустой, то ему присваиваем атрибут disabled вот так:
$(".im").click( function(){
if($(this).parent().next().children(".inp").attr("disabled") == false){
if($(this).parent().next().children(".inp").attr("value") == ""){
$(this).parent().next().children(".inp").attr("disabled","disabled");
}
}
$(this).parent().html($(this).parent().html());
});
|
И все вроде замечательно, если выбирать и добавлять файлы по порядку, но если один файл удалить, наступает полный ступор. Не могу понять, где затык... Помогите выйти из тупика... | |
|
|
|
|
|
|
|
для: Tamplier
(19.12.2010 в 18:10)
| | Сперва такой вопрос - вам какая разница в каком порядке, да и вообще порядком ли, пользователь заполнит поля? Ну придет вам первый и третий, а второй вообще не будет выбран, и что? | |
|
|
|
|
|
|
|
для: sim5
(19.12.2010 в 18:35)
| | Нет ну я понимаю что потом обработчиком их отсортирую, но перфикционизм в крови сидит зараза и требует совершенства.
Насколько я понимаю тормозится после очистки, но знать бы почему? | |
|
|
|
|
|
|
|
для: Tamplier
(19.12.2010 в 18:39)
| | Это не совершенством называется, а маятся ерундой.
Ну и напоследок - атрибут value поля типа file только для чтения, а значит...? | |
|
|
|
|
|
|
|
для: sim5
(19.12.2010 в 18:44)
| | Доводить до абсолютного порядка, это не ерунда.
А то что поле file только для чтения мы побеждаем полной перезаписью содержимого родительского div'a | |
|
|
|
|
|
|
|
для: Tamplier
(19.12.2010 в 18:47)
| | Чего чего? Что вы там побеждаете? Слов нет.... Мнимая ваша победа - коли выбрано пользователем, то значит вам это значение будет отослано гарантировано. Смех да и только. Удалять такое поле нужно, только тогда вы не получите его.
Порядок должен быть чем-то вызван, а не просто прихотью, тогда еще можно понять.
PS. Вы же ересь пишите, ну самую натуральную:
if($(this).parent().next().children(".inp").attr("value") == "")
и еще о каких-то победах рассуждаете. Или объясните, что значит "если один файл удалить..." по вашему? Удаления поля не видно у вас, а проверка value ничего не даст, так как изменить значение этого атрибута нельзя. | |
|
|
|
|
|
|
|
для: sim5
(19.12.2010 в 18:50)
| | Почему ересь если поле value доступно для чтения, т.е. проверьте сами.
Создайте поле ввода файла и введя файл нажмите еще раз на выбор файла.
Предварительно создав этот код
$(".class_input_file").click( function(){ alert($(this).attr("value")) });
|
Вместо class_input_file имя класса инпут, и вы получите в алерте название введенного в первый раз файла.
Так что это вы уважаемый ересь несете, если поле ДОСТУПНО ДЛЯ ЧТЕНИЯ значит его можно считать, учите мануалы...
> а проверка value ничего не даст, так как изменить значение этого атрибута нельзя.
Протестируйте а потом утверждайте, у вас неверная информация... | |
|
|
|
|
|
|
|
для: Tamplier
(19.12.2010 в 19:07)
| | Я вам и не говорю, что значение это не доступно, и читал в мануале давно, и помню, так что повторять чтение не буду. Но вы же пишите:
"все вроде замечательно, если выбирать и добавлять файлы по порядку, но если один файл удалить"
а в коде вашем проверка значения полей. Возникает вопрос - каким образом пользователь (вы скриптом) удаляете файл? Я понимаю, удалить можно поле из формы, но изменить значение этого поля нельзя. Так о чем тогода у вас речь?
Кстати, уж лучше оформить имена полей массивом, тогда на сервере их легче будет обработать функциями пересечения массивов, если надо будет удалить "пустоты". Именование раздельное порождает необходимость проверять все отдельно. | |
|
|
|
|
|
|
|
для: sim5
(19.12.2010 в 19:14)
| | Массивом и оформлены в оригинале, это я тут для простоты переписал | |
|
|
|
|
|
|
|
для: Tamplier
(19.12.2010 в 19:15)
| | Понятно, но на вопрос ответа так и нет - что значит удалить и почему тогда проверка значения? | |
|
|
|
|
|
|
|
для: sim5
(19.12.2010 в 19:16)
| | Надо тестами будет погонять что передается после удаления а что остается, сейчас не возьмусь 100% что-либо утверждать | |
|
|
|