gwt - 如何触发FileUpload小部件上的Click事件?

时间:2011-05-03 11:44:47

标签: gwt file-upload

我正在尝试创建一个简单的Button,当它被单击时,我想触发一个隐藏的FileUpload小部件,它位于一个FormPanel内。到目前为止我所做的是两件事:

  1. 我创建了一个原生的javascript 单击FileUpload的函数 widget的元素很简单 单击按钮。这有效 在Firefox中很好,但它不起作用 在Chrome中。
  2. 另外,我创造了 这个:NativeEvent nevent = Document.get()。createFocusEvent(); //我也尝试过和createclickEvent() DomEvent.fireNativeEvent(nevent,fileUploadWidget);事实并非如此 工作。
  3. 任何人都可以帮我吗???我搜索了很多,但我发现什么都没有用。

3 个答案:

答案 0 :(得分:11)

myFileUpload.getElement().<InputElement>cast().click()

是您正在寻找的。

要使其在基于WebKit的浏览器(Chrome,Safari)中运行,必须将FileUpload“移出视图”但不隐藏(如setVisible(false)中设置CSS display属性none),即(在CSS中):position:absolute; top: -1000px; left: -1000px;

答案 1 :(得分:2)

我相信 Thomas Broyer的回答已经过时了。我刚刚成功使用myFileUpload.click()没有问题。

我还在setVisible(false)字段中使用了FileUpload,它可以在Chrome中使用。 Haven在Safari中进行了测试,但现在似乎已经解决了这些问题。

答案 2 :(得分:0)

你也可以像这样使用JSNI:

private native void triggerClick(Element e) /*-{
    e.click();
}-*/;

然后致电

triggerClick(fileInput.getElement());