输入类型=附加到 onclick 事件的文件

发布于 2025-01-08 07:19:15 字数 453 浏览 1 评论 0原文

我有一个像这样的菜单:

<ul class="sub">
    <li><a href="#">New</a></li>
    <li><a href="#">Open</a></li>
    <li><a href="#">Save</a></li>
    <li><a href="#">Help</a></li>
</ul>

并且我想将 onclick 附加到 Open li 上,这将启动文件打开对话框,就像 input type="file" 所做的那样。我可以处理将代码附加到 li 的 onclick 事件,但我不知道要附加什么代码。

TIA

I have a menu like this:

<ul class="sub">
    <li><a href="#">New</a></li>
    <li><a href="#">Open</a></li>
    <li><a href="#">Save</a></li>
    <li><a href="#">Help</a></li>
</ul>

and I'd like to attach an onclick even to the Open li that would kick off a file open dialog, like input type="file" does. I can handle attaching code to the li's onclick event, but I don't know what code to attach.

TIA

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

猥︴琐丶欲为 2025-01-15 07:19:15

您可以将普通的 input type="file" 添加到页面并将其设置为隐藏。像这样的东西:(

<input type="file" id="theFileInput" style="display:none;" />

本示例仅使用内联样式,当然我建议将样式与标记分开。)

然后您可以启动对其的单击以响应目标元素上的单击事件。 它会类似于:

$('#clickableLiElement').click(function() {
    $('#theFileInput').click();
});

使用 jQuery(假设您可以在 li 上设置 id,或者以某种方式在选择器中唯一标识它) , type="file" 仍然存在,并且可以像任何其他表单元素一样进行交互。它对用户来说只是不可见的。但这将启动“打开文件”对话框并正常将其值设置为该元素,该元素可以正常包含在到服务器的 POST 中。

You can add a normal input type="file" to the page and style it to be hidden. Something like this:

<input type="file" id="theFileInput" style="display:none;" />

(Only using in-line styling for this example, I recommend separating the style from the markup of course.)

Then you can initiate a click on it in response to a click event on the target element. With jQuery (assuming you can set an id on the li, or otherwise uniquely identify it in the selector in some way) it would be something like:

$('#clickableLiElement').click(function() {
    $('#theFileInput').click();
});

The input type="file" is still there and can be interacted with just like any other form element. It's just invisible to the user. But this would launch the Open File dialog and set its value to the element normally, which can be included in the POST to the server normally.

蓝眼泪 2025-01-15 07:19:15
With JavaScript 

<input type="file" accept="images/*" name="images" id="images" onClick="showModal()" style="display:none"/>
<script>
    function showModal(){
        document.getElementById('images').click();
    }
</script>
<li onClick="showModal()"></li>

With JavaScript 

<input type="file" accept="images/*" name="images" id="images" onClick="showModal()" style="display:none"/>
<script>
    function showModal(){
        document.getElementById('images').click();
    }
</script>
<li onClick="showModal()"></li>

庆幸我还是我 2025-01-15 07:19:15

上面的答案(David)有效,但在您的 css 文件中,您需要执行以下操作:

opacity: 0;
-moz-opacity: 0;
filter:alpha(opacity=0);

display:none 解决方案不适用于 Chrome 或 Safari。

The answer above (David) works, but in your css file you need to do:

opacity: 0;
-moz-opacity: 0;
filter:alpha(opacity=0);

The display:none solution is not working with Chrome or Safari.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文