Я пытаюсь создать настраиваемую кнопку на Редактор пользовательского интерфейса Kendo с функцией просмотра файлов.
У меня на панели инструментов есть такая строка:
{
name: "Add",
template: '<a class = "k-button" id = "popupbutton" onclick = " events.toolbar_click(\'theFile\')">Command</a><input type = "file" id = "theFile" hidden/> ',
}
Похоже, это не работает. И приведенный ниже код - это то, что я в основном пытаюсь сделать, но в Редактор кендо.
function performClick(elemId) {
var elem = document.getElementById(elemId);
if (elem && document.createEvent) {
var evt = document.createEvent("MouseEvents");
evt.initEvent("click", true, false);
elem.dispatchEvent(evt);
}
}
<a href = "#" onclick = "performClick('theFile');">Open file dialog</a>
<input type = "file" id = "theFile" hidden/>Нужна помощь, чтобы сделать эту функцию нажатием одной кнопки?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Это можно сделать двумя способами. Первый - с настраиваемым шаблоном, как и у вас. Однако я не уверен, что такое «events.toolbar_click». Вот как заставить его работать:
Способ 1
<script>
function performClick(elemId) {
var elem = document.getElementById(elemId);
if (elem && document.createEvent) {
var evt = document.createEvent("MouseEvents");
evt.initEvent("click", true, false);
elem.dispatchEvent(evt);
}
}
$(document).ready(function() {
$("#toolbar").kendoToolBar({
items: [
{ name: "Add", type: "button",
text: "File", template: '<a class = "k-button" id = "popupbutton" onclick = "performClick(\'theFile\')">File Command 1</a><input type = "file" id = "theFile" hidden/> '} ]
});
});
</script>
Другой способ сделать это - использовать обработчик событий кнопок панели инструментов.
Способ 2
<input type = "file" id = "theFile" hidden/>
<script>
function fileClickEventHandler(){
performClick('theFile')
}
function performClick(elemId) {
var elem = document.getElementById(elemId);
if (elem && document.createEvent) {
var evt = document.createEvent("MouseEvents");
evt.initEvent("click", true, false);
elem.dispatchEvent(evt);
}
}
$(document).ready(function() {
$("#toolbar").kendoToolBar({
items: [
{ type: "button", text: "File Command 2", click: fileClickEventHandler },
]
});
});
</script>
Вы можете увидеть оба примера, работающие здесь: https://dojo.telerik.com/eLUbiXAF
Разве вы не можете поместить элемент ввода за пределы редактора Kendo?
Я просто сделал это и скрыл это с помощью JQuery. Выполняет работу на данный момент. Спасибо
Отличный пример! Думаю, я ошибся со своим вопросом. На самом деле это не панель инструментов, это редактор пользовательского интерфейса Kendo. Скрытый параметр у меня в редакторе не работает. и если я показываю: none, var elem = document.getElementById (elemId) возвращает undefined, потому что он не может видеть форму ввода