动态创建的getmdl选择字段's的下拉窗口没有'单击项目时不要关闭
Dynamically created getmdl-select field's drop down window doesn't close on click of an item
使用getmdl-select类动态创建输入文本元素的代码。代码段
<div id="project-details">
<div id='project-type' class="mdl-textfield mdl-js-textfield mdl-textfield--floating-label getmdl-select">
<input id="mainText" class="mdl-textfield__input" type="text" readonly tabIndex="-1">
<label for="mainText">
<i class="mdl-icon-toggle__label material-icons">keyboard_arrow_down</i>
</label>
<label for="mainText" class="mdl-textfield__label">Project Type</label>
<ul for="mainText" class="mdl-menu mdl-menu--bottom-left mdl-js-menu">
<li class="mdl-menu__item">Enhancements</li>
</ul>
</div>
</div>
Div with id "project-details" is created along with the form(static).
Below code dynamically creates the Div with id "project-type" and its child elements.
JavaScript Code
---------------
var project_type = document.createElement('div');
project_type.id="project-type";
project_type.className="mdl-textfield mdl-js-textfield mdl-textfield--floating-label getmdl-select";
componentHandler.upgradeElement(project_type);
document.getElementById('project-details').appendChild(project_type);
//Input element
var mainText = document.createElement('input');
mainText.class="mdl-textfield__input"
mainText.type="text";
mainText.className="mdl-textfield__input";
mainText.id="mainText";
mainText.tabIndex="-1";
mainText.readOnly=true;
componentHandler.upgradeElement(mainText);
document.getElementById('project-type').appendChild(mainText);
//Adding Label and i tag
var lbl_project_type = document.createElement('label');
lbl_project_type.setAttribute("for","mainText");
lbl_project_type.id="lbl-mainText";
componentHandler.upgradeElement(lbl_project_type);
document.getElementById('project-type').appendChild(lbl_project_type);
var i_lbl_project_type= document.createElement('i');
i_lbl_project_type.className="mdl-icon-toggle__label material-icons";
i_lbl_project_type.innerHTML = "keyboard_arrow_down";
componentHandler.upgradeElement(i_lbl_project_type);
document.getElementById('lbl-mainText').appendChild(i_lbl_project_type);
//Adding label for ul
var lbl_ul_project_type = document.createElement('label');
lbl_ul_project_type.setAttribute("for","mainText");
lbl_ul_project_type.id="lbl-ul";
lbl_ul_project_type.className="mdl-textfield__label";
lbl_ul_project_type.innerHTML="Project Type";
document.getElementById('project-type').appendChild(lbl_ul_project_type);
componentHandler.upgradeElement(lbl_ul_project_type);
//Add ul
var ul_project_type = document.createElement('ul');
ul_project_type.setAttribute("id","ul-project-type");
ul_project_type.setAttribute("for","mainText");
ul_project_type.className="mdl-menu mdl-menu--bottom-left mdl-js-menu";
document.getElementById('project-type').appendChild(ul_project_type);
componentHandler.upgradeElement(ul_project_type);
//Add li
var li = document.createElement('li');
li.id = "li-ul-project-type";
li.className ="mdl-menu__item";
li.innerHTML = "Enhancement";
li.setAttribute("tabindex", "-1");
document.getElementById('ul-project-type').appendChild(li);
componentHandler.upgradeElement(li);
componentHandler.upgradeElement(project_type);
//Trigger init function of getmdlSelect
getmdlSelect.init(".getmdl-select");
componentHandler.upgradeDom();
//trigger the javascript to bind the event
$.ajax ({
url: "http://localhost:8000/js/getmdl-select.min.js",
dataType: "script",
success: console.log('success')
})
问题:在我选择"li项目"(li value="增强")后,下拉窗口不会关闭。我尝试手动触发javascript,名为getmdlSelect.init(".getmdl-select");但没有运气。
javascript代码是在单击按钮时触发的。
我需要帮助来解决这个问题。谢谢
您不需要通过此行componentHandler.upgradeElement(element);
升级所有元素。除了上次通话外,其他地方都删除了它。写getmdlSelect.init(".getmdl-select"); componentHandler.upgradeDom();
就足够了在代码的末尾。
下面是您在jsfiddle 中的示例
您总是可以在更新的末尾添加componentHandler.upgradeAllRegistered()
相关文章:
- Dojo:访问dijit.form.Select中单击的项目
- 角度的项目列表 ng 重复,ng 单击显示全宽描述
- 将单击事件添加到附加的项目中
- 设置单击项目符号导航后不起作用的间隔
- 选择了多个用javascript单击的项目
- 获取中继器控件ASP.Net中显示的单击项目文本框
- 正在删除正在单击的项目
- 单击Oracle APEX导航栏项目时的条件操作
- 为什么当我单击X时,所有项目都会从我的Backbone.js视图中删除
- 如何根据单击的项目在modalbox中获取值
- Metro 应用程序中的列表视图项目单击
- 当索引页面上的项目单击时发布 ajax
- 单击按钮可更改多个跨度项目
- 如何在每次在 php 中单击提交时逐个显示数据库中的项目
- 单击相应的“btn”时编辑“项目”的css
- 仅在单击下拉列表中的项目时显示列表框
- 使用Selenium WebDriver单击下拉菜单不会激活Javascript来添加或删除页面中的项目
- 如何根据单击块中的哪个项目来渲染不同版本的分部
- Ext JS,项目单击侦听器似乎不起作用
- 高图上的条形项目单击事件