Java Script & Opera
Релиб
Форумы       Участники    Календарь    Кто он-лайн?
Добро пожаловать, гость ( Вход | Регистрация )
        



Java Script & Opera Expand / Collapse
Автор
Сообщение
03.12.2006 11:10
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 04.07.2007 23:09
Сообщ.: 174, Visits: 1 474
И так задача:

Есть форма, на форме поле ввода типа "file". Нужно подменить кнопку "обзор" картинкой и отнести ее (картинку) подальше от основного поля ввода. Вот как я это сделал:

<tr>
 <td background="images\input.gif" height="33" width="422">&nbsp;<input type="text" name="filename" style="width: 415;"></td> 
 <td width="70">&nbsp;</td>
 <td width="150" align="right"><div style="visible:false; display:none;"><input type="file" name="dialog" onChange="filename.value=dialog.value;"></div><a href="javascript: p2m.dialog.click();"><img src="images\browse.gif"></a></td>
</tr>

Т.е. поле ввода типа файл  - невидимое. Окно диалога выбора файла вызывает при кликаньи мышкой по изображению:

<a href="javascript: dialog.click();"><img src="images\browse.gif"></a>.

При каких-то изменениях в текстовом поле типа file текст этого поля передается в текстовое поле filename:

<input type="file" name="dialog" onChange="filename.value=dialog.value;">

ПРОБЛЕМА ЗАКЛЮЧАЕТСЯ В ТОМ, ЧТО СКРИПТ РАБОТАЕТ В IE, НО НЕ РАБОТАЕТ В OPERE.

Что я сделал не так??? Заранее благодарен.

Сообщ. #908359
04.12.2006 10:47
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 25.04.2007 11:57
Сообщ.: 77, Visits: 97
Если я не ошибаюсь то проблема в прямом обращении к полям, тут где то в моей теме одной писали что лучше использовать window.document.getElementById() - это точно и без ошибок отработает любой броузер. Ищет как по ИД так и по имени
Сообщ. #908384
04.12.2006 18:30
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 04.07.2007 23:09
Сообщ.: 174, Visits: 1 474
:( не работает!!! Не выходит каменный цветок... тьфу... т.е не появляется окошко... написал вот так:

window.document.getElementById('dialog').click();

а результат тот же, но ошибку не выдает. и FireFox мозг компосирует:( Что еще может быть?

Большое спасибо за то, что откликнулся!!!

Сообщ. #908447
05.12.2006 10:32
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 25.04.2007 11:57
Сообщ.: 77, Visits: 97
Лично у меня ни одна джаваскриптовая функция еще не принимала параметры заключенные в одинарные кавычки, только в двойные. Может быть это только у меня такая проблема, но ты всетаки проверь )

Вообще чтобы не путаться хорошая как мне кажется привычка атрибуты ХТМЛ тегов заключать в одинарные кавычки, а джаваскриптовые строки в двойные, а то напишешь к примеру

<button onclick='getElementById('element_id')'>

и что думаешь - сработает? Щас, преобразуется тут же в

<button onclick='getElementById(' element_id')'>

и вторую часть смело проигнорирует как неопознанный атрибут, а первую - как неправильное действие :)

Сообщ. #908468
05.12.2006 11:14
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 04.07.2007 23:09
Сообщ.: 174, Visits: 1 474
ну а у меня наоборот: сначала двойные кавычки, потом одинарные. думаю, что это не принципиально. но все равно не работает. что тут еще может быть?
Сообщ. #908472
05.12.2006 13:16
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 25.04.2007 11:57
Сообщ.: 77, Visits: 97
Так, скорее всего проблема гдето тут

<a href="javascript: dialog.click();"><img src="images\browse.gif"></a>

Я в общемто не очень понимаю что значит javascript: p2m.dialog.click() , просто незнакомая форма записи, но попробуй переписать это как

<img src="images\browse.gif" onclick='dialog.click()'>

ну и конечно прямые обращения к именам замени всеже на вызов функции как я писал в начале

Сообщ. #908489
05.12.2006 16:18
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 04.07.2007 23:09
Сообщ.: 174, Visits: 1 474
да, сегодня подобная мысль меня уже посещала. я попробовал сделать обработчик события onclick - та же барадаааа. в IE работает, в Opera Or FireFox - не фига. Заказчик уже обещает порвать пасть...:(

Может тоже настройки?

Сообщ. #908503
05.12.2006 17:08
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 25.04.2007 11:57
Сообщ.: 77, Visits: 97
фиг его разберет. Приведи всю рабочую часть от <form> до </form>

попробуй убрать visible, оставь только display : none

поменяй все обращения по идешникам напрямую на то что я сказал через функции и продублируй имена идшниками

поменяй одинарные кавычки в джаве на двойные и соответственно в ХТМЛ наоборот чтобы было правильно

Поменяй все имена и ИДшники компонентов, вообще все переменные имена которые ты используешь на имена вида my_имя, может быть где то какой то внутренний параметр захватил нечаянно.

Если все это вместе не дало ефекта попробуй  использовать другой обработчик событий:http://xpoint.ru/know-how/JavaScript/PoleznyieFunktsii#NaznachenieNeskol'kihObrabotch

Перепроверь код на наличие опечаток или мелких глюков, ИЕ их пропускает, а вот оперы и файерфоксы могут и не пустить.

И напиши наконец какая ошибка пишется, если пишется какая то? А еще лучше дай линк на эту страницу, эсли это возможно )

Сообщ. #908513