隐藏文件输入在提交时不保留值

2024-04-14

我有一个带有假按钮的隐藏文件输入和用于浏览器显示一致性的输入。我目前也可以看到原始输入,并且发现使用它上传文件一切运行正常。

然而,使用“dummyfile”中的按钮通过 javascript 触发点击,该值将按预期加载,并且在 UI 中也是如此。但是,当我这次单击“提交”时,它会清除输入中的值,并且不执行任何其他操作。这只发生在 IE 中,而不会发生在 chrome 中。这是我之前问过的问题的根源:https://stackoverflow.com/questions/19275901/internet-explorer-specific-form-post-with-file-input-returning-empty-file-list https://stackoverflow.com/questions/19275901/internet-explorer-specific-form-post-with-file-input-returning-empty-file-list。我将这个问题作为一个单独的问题提出,因为它的相关性超出了该问题的范围。

HTML(这是在部分视图中,因此我可以添加更多输入并返回文件集合,我只是将其拉出到主视图并针对此错误和另一个错误对 0 进行硬编码)。

<div class="control-group">
   <label class="control-label" for='@String.Format("file{0}", 0)'>File</label>
   <div class="controls">
         <input type="file" name="files" class="hiddenFileInput" id='@String.Format("file{0}", 0)' />
         <div class="dummyfile">
              <input id="@String.Format("filename{0}", 0)" type="text" class="input disabled" name="filename" >
              <button type="button" class="btn btn-primary">Choose</button>
         </div>
    </div>
</div>

jQuery:

function fileUploadControlInit() {

        $('.dummyfile .btn').unbind("click").on("click", function (e) {
            $(this).closest("div").siblings(" :file").trigger('click');
        });

        $('.hiddenFileInput').on("change", function (e) {
            var val = $(this).val();
            var file = val.split(/[\\/]/);
            var fileName = file[file.length - 1];
            $(this).siblings("div").children(" :text").val(fileName);


            $("#UploadFile").prop('disabled', false);

        });
    }

这是 Internet Explorer 中内置的安全限制(我已经测试了 v6.0 到 v10),是的,它允许您以编程方式单击浏览按钮,但在您提交表单时它会清除该框 - 基本上是为了防止用户被欺骗进入上传文件。

因此,您的选择是采用不同的样式方法,此示例基本上使原始按钮在样式精美的按钮之上变得不透明(归功于 Andrewhere https://stackoverflow.com/a/18875072/1111494):

<!DOCTYPE html>
<html>
<head>
  <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  <title> - jsFiddle demo</title>

  <script type='text/javascript' src='//code.jquery.com/jquery-1.9.1.js'></script>



  <link rel="stylesheet" type="text/css" href="/css/result-light.css">

  <style type='text/css'>
    input[type=file] {
    opacity: 0;
    position: absolute;
    top:0;
    left: 0;
}

.button-container {
    position: relative;
}

.fake-button {
    border: 3px inset #933;
    pointer-events:none;
    z-index: -100;
}
  </style>



<script type='text/javascript'>//<![CDATA[ 
$(window).load(function(){

});//]]>  

</script>


</head>
<body>
  <form method="post" enctype="multipart/form-data" action="http://google.com/">
    <div class="button-container">
        <span class="fake-button">fake button</span>
        <input type="file" name="file" id="id_file" />
    </div>
    <input type="submit" />
</form>

</body>

</html>

上也提到了其他帖子 https://stackoverflow.com/a/18875072/1111494这里对文件上传框的各种浏览器样式进行了很好的描述:http://www.quirksmode.org/dom/inputfile.html http://www.quirksmode.org/dom/inputfile.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

隐藏文件输入在提交时不保留值 的相关文章

  • 如何重新加载 jquery dropkick 对象

    我使用一个简单的选择列表和 jquery dropkick 库来使其美观 现在我想在更改相应的选择元素后更改 dropkick 内容 出现了一个新选项 但只需调用 select dropkick 不起作用 而且好像不支持 只需从头开始重建那
  • HTML5 历史 API

    我如何使用 HTML5 历史 api 我确实经历过https developer mozilla org en DOM Manipulated the browser history https developer mozilla org
  • 无法将数据加载到 mvc 4 中的 jTable 中

    好的 我第一次尝试 jTable 我可以加载表 但这对我没有什么好处 因为它不会加载我的任何数据 当我调试程序时 我想要的表中的所有行都存储在我的列表中 因此我很困惑为什么当我运行应用程序时会弹出一个对话框 显示 与服务器通信时发生错误 H
  • 来自 JSON 的 Angular 8 动态表单

    我正在尝试从 JSON 模式递归生成动态表单 但我正在努力解决找不到表单控件的问题 这是代码示例 我收到这个错误 错误错误 找不到名称为 createdAt 的控件 我尝试了不同的方法 但仍然存在问题 我知道我错过了一些东西 所以请帮忙 任
  • 动态速度计 javascript 或 jquery 插件

    我希望有动态ajax插件在页面上显示速度计 一个想法是我设置一个背景并旋转针 有人知道相关插件吗 这里有一些供您参考 http bernii github com gauge js http bernii github com gauge
  • Modernizr - 加载 polyfills / 使用自定义检测的正确方法

    我想在网页上使用一些新的 HTML5 表单属性和输入类型 有些浏览器已经支持它们 有些浏览器不支持 也永远不会支持 这就是我想使用 Modernizr 的原因 这就是我的麻烦开始的原因 据我了解 Modernizr 本身并不是一个 poly
  • 如何在 Html.ValidationSummary 中指定数据注释错误的顺序

    我使用以下命令在表单上显示错误 我的域对象继承自基类 我发现基类数据注释属性显示在列表底部 这违背了它们在我的表单中出现的顺序 有什么方法可以指定错误的显示顺序吗 Example public class ClassA Required p
  • Jquery从下拉列表中获取所选值的id

    我有一个下拉列表 可以从数据库获取值 如下所示 get getJobs function jobs seljobs jobs var i 0 jobs forEach function n alert job id n id 32 67 4
  • 动画进度元素值

    我有一个progress元素 该元素如下所示 div class container div div div
  • 检查 touchend 是否在拖动后出现

    我有一些代码可以更改表的类 在手机上 有时表格对于屏幕来说太宽 用户将拖动 滚动来查看内容 但是 当他们触摸并拖动表格时 每次拖动都会触发 touchend 如何测试触摸端是否是触摸拖动的结果 我尝试跟踪dragstart和dragend
  • 按百分比设置 bootstrap 模态身高

    我正在尝试制作一个带有主体的模态 当内容变得太大时 该主体会滚动 但是 我希望模式能够响应屏幕尺寸 当我将最大高度设置为 40 时 它没有任何效果 但是 如果我将最大高度设置为 400px 它会按预期工作 但不会响应 我确信我只是错过了一些
  • W3C 验证器:“握手警报:unrecognized_name”

    我正在尝试验证我的网站W3C Nu Html 检查器 https validator w3 org nu doc https 3A 2F 2Fwww healthdrop in 2F但我遇到了以下错误 不知道为什么 IO 错误 握手警报 u
  • 是否有任何非轮询方式来检测 DOM 元素的大小或位置何时发生变化?

    很长一段时间以来 我一直在寻找一种方法来检测 DOM 元素的大小或位置何时发生变化 这可能是因为窗口调整了大小 或者因为向该元素添加了新的子元素 或者因为在该元素周围添加了新元素 或者因为 CSS 规则已更改 或者因为用户更改了浏览器的字体
  • 使用 JS 合并具有相同值的相邻 HTML 表格单元格

    我已经为此苦苦挣扎了一段时间 我有一个根据一些 JSON 数据自动生成的表 该数据可能会有所不同 我想合并第一列中具有相同值的相邻单元格 例如此表中的 鱼 和 鸟 table tr td fish td td salmon td tr tr
  • 为什么“tbody”不设置表格的背景颜色?

    我在用 tbody 作为 CSS 选择器来设置background color在一个表中 我这样做是因为我有多个 tbody 表内的部分 它们具有不同的背景颜色 我的问题是 当使用border radius在细胞上 细胞不尊重backgro
  • 悬停时为 SVG 制作动画

    我正在尝试在悬停时为 SVG 文件设置动画 默认情况下 它可以使用 svg 函数实现出色的动画效果 例如
  • :jQuery / Sizzle 中的 nth-of-type()?

    让我惊讶的是Sizzle http sizzlejs com jQuery 使用的选择器引擎 带有一个内置的 nth child 选择器 但缺少 nth of type 选择器 为了说明之间的区别 nth child and nth of
  • Jquery - 通过在字符串中构建 id 的 id 获取元素

    我在使用 jquery 元素时遇到问题 我正在 var 中构造名称 例如 var myId myGotId myId attr title changed myId 返回空 我想通过 id 获取我的元素 但动态构建我的 Id 连接字符串 编
  • 需要有关 React Js 的帮助

    我是 React Js 新手 我的代码无法正常工作 请看下面 这是我的脚本文件Main jsx 该文件由 React 编译 输出放置在 dist 文件夹下的 main js 文件中 var react require react react
  • HTML 默认图像大小

    我在我的代码上显示 3 张图片 图片具有不同的尺寸 宽度和高度 div class row div class col lg 12 h2 class page header Gallery h2 div div class col md 4

随机推荐

  • Android 5.0 不支持 BitmapFactory.Options inPurgeable

    我正在学习fresco lib of Facebook 我看到存储位图ashmem选项是inPurgeable很好 我们需要非常关心内存管理 但会减少OutOfMemoryError on Davilk heap 我想知道为什么Androi
  • SWFUpload 还活着吗?

    我正在考虑在我的网站上使用 SWFUpload 但我看到最后一个版本是在 2010 年 3 月 而且它还是一个测试版 看起来 SWFUpload 的开发就停止了 这个项目还活着吗 还有其他选择吗 在我看来 SWF上传看起来很死 自 2010
  • 通过访问器函数使用重载的operator[]

    我有一个访问器函数 它返回对类型 std map 的 const 引用 myMap t const getMap const return paramMap 该类型有一个重载 操作员 然后使用的语法是什么 直接从 getter 函数获取操作
  • 为什么 git checkout 不创建新的跟踪分支?

    TLDR 如果 X 作为远程分支存在 则git checkout X应该创建它的本地分支 就我而言 对于单个分支来说 情况并非如此 远程存储库有一个master release 和其他一些分支 比如refactor update I do
  • React-Native iOS 应用程序构建失败 - 打印:条目,“:CFBundleIdentifier”,不存在

    我正在本地 Mac OS X El Capitan 机器上运行一个反应本机应用程序 我已经安装了所需的依赖项 但该应用程序仍然无法在 iOS 模拟器中启动 这是输出 BUILD FAILED The following build comm
  • 清单中的 ClassPath 不起作用

    我的 jar 中的文件结构是 com my Main class META INF MANIFEST MF RXTXcomm jar Manifest mf 组成 Manifest Version 1 0 Main Class com my
  • 无法加载文件或程序集“System.Web.Providers”

    你好 这是我的配置文件
  • Fork 系统调用失败后 rax 中的返回值是多少?

    我知道打电话fork 在C中如果有错误将返回 1 但我想知道当你调用时错误返回值是什么sys fork在装配中 我通常会假设它也返回 1 但我已经处理过 sys brk 并且汇编中的原始系统调用返回与 C Brk 包装器不同的东西 有谁知道
  • Node.js 未处理的拒绝错误

    我的代码中出现未处理的拒绝错误 但跟踪不会告诉我导致该错误的原因 我认为这是webp cwebp导致问题的电话 当我运行代码时 我成功转换了图像和日志状态 然后遇到了未处理的拒绝 貌似我没有进入最后两个 then 阻塞 因为没有控制台消息被
  • 当模块内且选择标准发生更改时,如何更新 Shiny 中的 DT 数据表

    我尝试制作一个闪亮的模块来使用 DT 包呈现来自数据帧的数据 我想使用一个模块来对 DT 表选项 如语言和其他选项 进行标准设置 我希望用户能够以交互方式选择数据的不同子集 然后能够将数据视为 DT 表 子集的选择将在模块外部生成 因为我希
  • 如何在 Vue.js 中使用“img src”? [复制]

    这个问题在这里已经有答案了 我的 Vue js 模板中有这个 img src media avatars joke avatar alt 它位于一个呈现笑话的循环内 其他字段渲染得很好 但对于图像 我在控制台中收到此错误 src media
  • 使用 kotlin 自定义风格中的 ClassNotFoundException

    我定义了自己的风格并设置了sourceSet sourceSets main java srcDirs src main kotlin WORKS myflavor java srcDirs src myflavor kotlin DOES
  • LinearLayout 使用 java 代码动态设置边框颜色,无需 XML

    我对这个问题做了一些研究 但还没有发现类似的东西 首先 我使用 ShapeDrawable 制作线性布局的边框 然后我尝试在 LinearLayout 上设置背景颜色 但颜色未设置然后我注释了两行 ShapeDrawable 然后在设置线性
  • 将 GMT 时间转换为 EST

    我的 sql 服务器位于 GMT 我需要获得 EST 等效 tz 不知何故 EST 是错误的 select now convert tz now GMT EST convert tz now GMT EST interval 10 minu
  • 计算 Java 集合中出现次数的优雅方法

    给定一个可能有重复项的对象集合 我希望最终得到每个对象的出现次数 我通过初始化一个空的来做到这一点Map 然后迭代Collection并将对象映射到其计数 每次映射已包含该对象时增加计数 public Map
  • .NET 通过时区名称获取时区偏移量

    在数据库中 我将所有日期 时间存储为 UTC 我知道用户的时区名称 例如 美国东部标准时间 为了显示正确的时间 我想我需要将用户的时区偏移量添加到 UTC 日期 时间 但是我如何获得时区名称的时区偏移量 谢谢你 您可以使用TimeZoneI
  • 计算字符串中最大连续 RE 组的数量[重复]

    这个问题在这里已经有答案了 如何计算字符串中连续字符串组的最大数量 import re s HELLOasdHELLOasdHELLOHELLOHELLOasdHELLOHELLO Give me the max amount of con
  • SwiftUI - 如何在 macOS 上将 onCommand 与 NSMenuItem 结合使用

    我正在尝试找到在 macOS 上将 NSMenuItem 与 SwiftUI onCommand 连接的最佳解决方案 目前我正在做以下事情 在 AppDelegate 中 我创建了一个虚拟函数 以便能够列出第一响应者收到的操作列表的函数 I
  • IntelliJ 工件 JAR 文件:无法找到或加载主类

    我在 IntelliJ 中创建了一个 JAR 工件 可以选择将 JAR 文件提取到目标 JAR 看起来像这样 我正确填写了清单信息 我使用 ZIP 检查了 JAR 文件的内容 它包含 jar 文件 正确填充的 MANIFEST MF 和我的
  • 隐藏文件输入在提交时不保留值

    我有一个带有假按钮的隐藏文件输入和用于浏览器显示一致性的输入 我目前也可以看到原始输入 并且发现使用它上传文件一切运行正常 然而 使用 dummyfile 中的按钮通过 javascript 触发点击 该值将按预期加载 并且在 UI 中也是