4

好吧,我很困惑,所以我要打开另一个关于样式文件文件上传表单元素的问题。

经过一些尝试,我最终(认为)我让它工作了,但是像往常一样,IE 将再次开始抗议。问题是,我将有以下表格,它使用 css 隐藏真正的文件输入,因此它使用 fileHiddenInput div 将其替换为假文件。

html:

<form enctype="multipart/form-data" method="post" name="uploadform" action = "">                    
  <div class="input-append">
    <input type="text" id = "appendedInputButtons" class="span2" name="fileuploadtext"><input type="button" id="upbutton" class="btn" value="Select"><input type="submit" name="upload" value="uploaden" class="btn">
  </div>
  **<div class="fileHiddenInput"><input id="upfile" type="file" name="file" value="upload" /></div>**
</form>

CSS:

/** file input **/
.fileHiddenInput {
    height: 0px;
    width: 0px; 
    overflow:hidden;
}

我将使用一些 jquery 来发送表单,我也可以将代码放在这里。但是经过多次试验和错误后,我发现如果使用 fileHiddenInput div 继续使用 css 隐藏文件输入,IE9 将不会发送文件输入。当 make 我将通过删除 fileHiddenInput div 或使用 css 使其可见来使文件输入可见,然后表单将按应有的方式发送。

有谁知道或是否有人找到了解决方法?

4

2 回答 2

2

您可以尝试一些隐藏策略,一种是通过设置样式将元素从屏幕上移开

position: absolute; z-index: 19999; top: -1000px; left: -1000px;

另一种方法是使用不透明控件覆盖文件输入元素。

于 2012-07-10T14:53:45.370 回答
0

元素的不透明度 0 导致它被视为隐藏。

希望这可以帮助某人 - 我在让 file_field.set 与 IE 和 selenium/watir 一起工作时遇到问题。问题是 (:input => "upload") 在锚标记下。通过检查器查看它时,我们看到下面的 file_field 的不透明度设置为 0.. 这导致了 Element not visible 错误。

将不透明度设置为 > 0(在我们的示例中为 0.01)允许 Web 驱动程序与其交互并生成上传窗口并设置文件路径。

这是用 IE11 在 Win7 上测试的

于 2014-12-15T15:39:45.653 回答