Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > confirm для <input type=”file”> в IE6, IE7, IE8


Автор: Roy 8.3.2010, 20:06
При нажатии кнопки выбора файла или клике в области, где отображается имя выбранного файла,
должно сначала отображаться диалоговое окно confirm

далее при нажатии:
«OK» - должно появиться стандартное для <input type =”file”> диалоговое окно выбора файла
«Cancel» - ничего не должно происходить.

Код

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
    <title>Test</title>
    <script language="JavaScript">
      function show_confirm()
      {
        var result = confirm("Information message");
        if (result == true)
        {
          return true;
        }
        else
        {
          return false;
        }
      }
    </script>
</head>
<body>
  <form action="upload.php">
        <input type="file" name="uploadNewFile" id="uploadNewFile" accept="application/pdf" size="60" onclick="return show_confirm();">
  </form>
</body>
</html>


Проблема в том, что в IE (6-8) это работает только при нажатии на кнопке, а в FireFox и Chrome работает как при нажатии на кнопке, так пи при клике в области отображения имени файла. Почему так происходит? – загадка. Возможно ли в IE добиться такого же эффекта, которым обладает скрипт в FF и Chrome?

Примечания:
1.Вместо
Код

return true;

пробовал
Код

document.getElementById('uploadNewFile').click();

не помогло.
2. В Opera та же проблема, что и в IE.


Автор: Onis 11.3.2010, 20:55
Код

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<html>
    <head>
        <script>
            window.onload = function(){
                document.getElementById("fUpload").onmousedown = function()
                {
                    if(window.confirm('sure'))
                    {
                        document.getElementById("fUpload").click();
                        return false;
                    }
                    return false;
                }
            }
        </script>
    </head>
    <body>
            <input type="file" id="fUpload"/>
    </body>
</html>


Автор: Onis 11.3.2010, 21:13
Вот так вроде работает в ie6.

Автор: Roy 18.3.2010, 14:34
Thanks!  smile 
Работает не только в IE6 но и выше. Красивое решение. Я в попытках ушел в более громоздкие дебри - пытался заставить работать через триггеры в jQuery или прятать input=file в display:none и вызывать ее из имитирующей комбинации input+text и button.
Осталось скомпоновать чтобы работало и в FF. smile


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)