我想觸發一個點擊事件上的輸入類型=「文件」點擊另一個按鈕。jquery觸發器點擊不工作在Safari瀏覽器在Mac,Ipad
它的正常工作在所有瀏覽器,除了在MAC,IPAD & iPhone Safari瀏覽器上。
是否有任何技巧可以完成這項任務?
我想觸發一個點擊事件上的輸入類型=「文件」點擊另一個按鈕。jquery觸發器點擊不工作在Safari瀏覽器在Mac,Ipad
它的正常工作在所有瀏覽器,除了在MAC,IPAD & iPhone Safari瀏覽器上。
是否有任何技巧可以完成這項任務?
找到了一個替代方案。
只需將輸入type="file"
定位在自定義按鈕上並通過絕對定位並使用jQuery fadeTo('fast',0)
來隱藏它。
現在,如果我們點擊自定義按鈕文件瀏覽器窗口出現。
它在所有桌面瀏覽器中都可以使用,但不能在iPhone
& iPad
之間,因爲它們不允許上傳任何文件。
jQuery只是將不透明度設置爲0. CSS可能比使用jQuery動畫更合適 –
出於安全原因,當涉及到與文件輸入的JavaScript交互時,瀏覽器可能非常挑剔。 Safari可以防止你觸發任何點擊事件。 Chrome和Firefox的某些版本也有此限制。這已經是previously discussed here。
明白了,它是不可能的網絡遊獵瀏覽器,謝謝替代。 –
如果有的話,請分享其他選擇。 –
它更好地使用CSS而不是JS來隱藏元素,因爲它會將您的元素直接隱藏。
下面的方法奏效了我:
$(".upload_on_click").each(function(index) {
var form = $(this).next("form");
//form.hide(); /* THIS TECHNIQUE DIDN'T WORK IN SAFARI */
form.css("position", "absolute");
form.css("visibility", "hidden");
$(this).css("cursor", "pointer");
$(this).click(function() {
$('input[type="file"]', form).trigger("click");
});
$('input[type="file"]', form).change(function() {
$('input[type="submit"]', form).trigger("click");
});
});
嘗試加載你的腳本在頁腳。我曾經有過類似的問題,並且做了這個訣竅。
不知道是否有人再讀這個問題,但我最近有一個類似的問題與Safari瀏覽器,所以我想我會分享。
首先,作爲ceejayoz提到,看到這裏的討論:In JavaScript can I make a "click" event fire programmatically for a file input element?
的解決方案,那麼,如果你不希望使用按鈕定位,是顯示文件輸入按鈕(刪除「顯示:無; 「),而是使用」opacity:0;「隱藏它。你可能也想絕對定位它,所以它不會與其他元素交互。無論如何,這樣你仍然可以使用JS來激活所有瀏覽器中的文件輸入。
相反的trigger("click")
您可以使用下面的代碼在所有瀏覽器成功的作品:
var evt = document.createEvent("HTMLEvents");
evt.initEvent("click", true, true);
document.getElementById(elem_id).dispatchEvent(evt);
現在只有'initEvent()'被棄用。 jQuery.trigger(「click」)具有使用可用的最新可用接口的優點... –
使元素可見,作爲觸發事件不工作在MAC野生動物園隱藏要素。
我得到這個
opacity : 0.01
最簡單的答案輸入文件元素
。點擊()在Safari不支持。 Sattu的建議應該起作用。但是你不需要Javascript來定製輸入文件按鈕。
<label><input type="file" id="file" name="file" style="position:absolute; left:-9999px;" />Upload</label>
參考:http://noypiscripter.blogspot.com/2014/04/simplest-cross-browser-custom-upload.html
只需刪除「顯示:無」和使用「visibility:hidden的」和工程跨瀏覽器。
可能的重複[在JavaScript中,我可以做一個「點擊」事件消防編程的文件輸入元素?](http://stackoverflow.com/questions/210643/in-javascript-can-i-make-a -click-event-fire-programmatically-for-a-file-input) – ceejayoz
然後如何製作一個定製的文件瀏覽功能。 –
或者不要,或者使用像SWFUpload這樣的基於Flash的解決方案。 – ceejayoz