Как я могу вызвать clickEvent на виджет FileUpload? - PullRequest
4 голосов
/ 03 мая 2011

Я пытаюсь создать простую кнопку, и при ее нажатии я хочу вызвать скрытый виджет FileUpload, который находится внутри FormPanel.До сих пор я делал две вещи:

  1. Я создал встроенную функцию javascript, которая щелкает элемент виджета FileUpload при нажатии простой кнопки.Это отлично работает в Firefox, но не работает в Chrome.
  2. Кроме того, я создал это: NativeEvent nevent = Document.get (). CreateFocusEvent (); // Я тоже попробовал и createclickEvent ().
    DomEvent.fireNativeEvent (nevent, fileUploadWidget);Это не работает вообще.

Кто-нибудь может мне помочь, пожалуйста ???Я много искал, но ничего не нашел.

Ответы [ 3 ]

11 голосов
/ 04 мая 2011
myFileUpload.getElement().<InputElement>cast().click()

- это то, что вы ищете.

Чтобы он работал в браузерах на основе WebKit (Chrome, Safari), FileUpload должен быть «перемещен из поля зрения», но не скрыт (как в setVisible(false), который устанавливает свойство CSS display на * 1006). *), то есть что-то вроде (в CSS): position:absolute; top: -1000px; left: -1000px;

2 голосов
/ 28 июня 2015

Я полагаю Ответ Томаса Бройера устарел. Я только что успешно использовал myFileUpload.click() без проблем.

Я также использовал setVisible(false) в поле FileUpload, и оно работает в Chrome. Не тестировались в Safari, но, похоже, эти проблемы уже решены.

0 голосов
/ 02 августа 2014

Вы также можете использовать JSNI следующим образом:

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

Затем позвоните

triggerClick(fileInput.getElement());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...