【发布时间】:2023-03-19 09:30:02
【问题描述】:
我有一个称为$nameEditor 的文本输入字段。我想在按下按钮时显示此文本字段,并将其隐藏在 blur 或按下转义键时。
隐藏blur 上的字段每次都有效。
按退出键时隐藏字段仅在第一次时有效。事件序列示例。
1) 按下shows 文本输入字段的按钮。
2) 按转义 - 文本输入字段hides
3) 再次按下shows 文本输入字段的按钮。
4)按escape - 不触发keyup事件
5) 按下任何其他键并触发 keyup 事件
6)按escape - 文本输入字段hides
相关标记:
<button id="renameButton" title="Rename" data-icon="ui-icon-pencil">Rename</button>
<span id="assemblyNameView">Assembly Name</span>
<input id="assemblyNameEditor" style="display:none" class="ui-corner-all widget">
相关脚本:
var $renameButton = $("#renameButton"); var $nameViewer = $('#assemblyNameView'); var $nameEditor = $('#assemblyNameEditor'); 功能取消编辑(){ $nameEditor.hide(); $nameViewer.show(); } 函数初始化编辑(){ $nameViewer.hide(); $nameEditor.val($nameViewer.text()).show().select(); } 功能提交编辑(新名称){ // TODO: 更新正在编辑的结构。 $nameEditor.hide(); $nameViewer.text(newName); $nameViewer.show(); } $renameButton.click(initEdit); $nameEditor.blur(cancelEdit); $nameEditor.keyup(函数(e){ 控制台.log(e); 如果(e.keyCode === 13){ var newName = val(); 如果(新名称 === ''){ alert("未指定名称。"); $nameEditor.val($nameViewer.text()).select(); e.preventDefault(); 返回假; } 提交编辑(新名称); } 否则如果(e.keyCode === 27){ 取消编辑(); } });为什么输入框隐藏后重新显示后escape键没有触发keyup事件?
【问题讨论】:
-
你用的是什么浏览器?
-
好问题。我正在使用 Chrome。但是,我刚刚在 IE 10 和 Firefox 中测试了代码,我得到了预期/期望的行为。这似乎是 Chrome 中的一个错误。应用 King King 的解决方案在 Chrome 中产生了预期的行为。
标签: javascript jquery html css javascript-events