2013-11-27 7 views
3

Извините, если вы нашли этот вопрос повторяющимся, но я огляделся, попробовал, не смог, так что вам нужна ваша помощь.hidden Тип входа = 'файл' не запускается при нажатии на его родительский div

one.html

<html> 
    <head> 
    <link rel="stylesheet" href="one.css" > 
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> 
    <script src="one.js"></script> 
    </head> 
    <body> 
     <div class='some-class' id="add-image"> 
      <input type="file" id="myfile" style="display:none" /> 
      <h4> I want to open the file upload dilogue when anywhere of this div has been clicked</h4> 
     </div> 
    </body> 
</html> 

one.css

.some-class{ 
border: 1px solid grey; 
} 

h4{ 
    text-align:center; 
} 

one.js

$("#add-image").click(function(){ 
    $("input[id='myfile']").click(); 
}); 

Это показывает, иногда

event.returnValue устарел. Вместо этого используйте стандартное событие event.preventDefault().

иногда

неперехваченное максимальный RangeError размер стека вызовов превысил

Я не знаю, Что происходит, если его проблемы с версией Jquery? Не могли бы вы помочь мне? Образец рабочего кода или, может быть, jsfiddle? Спасибо заранее :)

+0

Вы пробовали '$ ('# MyFile') нажмите()' или '$ ('# MyFile') фокус..(); '? –

+0

попробовал оба. Не работает! –

ответ

1

изменить ваш HTML для

 <div class='some-class' id="add-image"> 
     <h4> I want to open the file upload dilogue when anywhere of this div has been clicked</h4> 
    </div> 
    <input type="file" id="myfile" style="display:none" /> 
3

Вам нужно добавить обработчик щелчка в йоте готового обработчика, потому что, когда one.js выполняется в add-image элементе не присутствует в структуре йота

jQuery(function ($) { 
    $("#add-image").click(function() { 
     $("#myfile").click(); 
    }); 
}) 

Dom Ready

Поскольку элемент ввода файла находится в элементе myfile, инициирующий элемент щелчка в элементе файла, вызывается рекурсивная ошибка: callstack exceeded

Решение переместить файл элемент из myfile элемента

<input type="file" id="myfile" style="display:none" /> 
<div class='some-class' id="add-image"> 
    <h4> I want to open the file upload dilogue when anywhere of this div has been clicked</h4> 
</div> 

Демо: Fiddle

+0

** Не работает Арун. Ошибка сбрасывания: ** event.returnValue устарел. Вместо этого используйте стандартное событие event.preventDefault(). Uncaught RangeError: Максимальный размер стека вызовов превышает –

+0

'event.returnValue устарел' является предупреждением в новых версиях браузеров ...надеюсь, что jQuery будет обрабатывать его в новых версиях –

+0

, можете ли вы дать дополнительную информацию о проблеме стека вызовов? –

1

я тонкие Кё пропустили Dóm готовый обработчик.
попробовать это:

$(document).ready(function(){ 
    $("#add-image").click(function(){ 
    $("#myfile").trigger('click'); 
    }); 
}); 
+0

event.returnValue устарел. Вместо этого используйте стандартное событие event.preventDefault(). Uncaught RangeError: Максимальный размер стека вызовов превышен –

+0

Не работает :(Диалог не открывается. –