在 jquery 自动完成控件上按 escape
我有一组字段。在阅读模式下,它们在表格单元格中显示为文本。双击单元格会将记录置于编辑模式。在编辑模式下按“enter”即可提交更改。在编辑模式下按“esc”返回读取模式而不更改数据。
现在,每个字段都添加了 jQuery UI 自动完成控件。 当自动完成菜单可见时,我希望“输入”的行为与自动完成通常的行为相同(将输入中的值替换为选定的菜单值并关闭自动完成菜单)不< /strong> 提交更改/返回编辑模式。当按下退出键时,如果菜单打开,则执行通常的自动完成功能(将编辑字段返回到其先前的值并关闭菜单)而不返回到阅读模式。
我已在此处放置了我的问题的演示。目前,如果您在自动完成菜单项之一上按“enter”键,自动完成功能就会完成它的工作,并且更改会立即提交。按 escape 关闭自动完成菜单并取消编辑模式。
I have a set of fields. In read mode, they display as text within a table cell. Double clicking the cell puts the record in edit mode. Pressing "enter" while in edit mode commits the change. Pressing "esc" in edit mode returns to read mode without changing the data.
Now, each field has a jQuery UI autocomplete control added. When the autocomplete menu is visible, I want "enter" to behave as it normally does for autocomplete (replace the value in the input with the selected menu value and close the autocomplete menu) without commiting the change/returning to edit mode. And when pressing escape, if the menu is open, perform the usual autocomplete functions (return the edit field to its previous value and close the menu) without returning to read mode.
I have placed a demo of my problem here. Currently, if you press "enter" on one of the autocomplete menu items, autocomplete does its thing AND the changes are committed immediately. Pressing escape closes the autocomplete menu AND cancels edit mode.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
使用自动完成的打开和关闭事件来取消绑定/重新绑定您的自定义行为,以便仅在自动完成菜单未打开时才发生。这将使事件不会变得混乱。我的工作代码如下:
工作jsfiddle位于此处。
Use the open and close events of the autocomplete to unbind/rebind your custom behavior so that it occurs only when the autocomplete menu is not open. This will keep the events from getting confused. My working code follows:
The working jsfiddle is here.
您可以使用选择和关闭事件来租用编辑模式
,它们位于您的代码中:
工作示例:
http:// jsfiddle.net/9unaU/6/
更新:
进行了另一项更改,以确保在 exitEditMode 上隐藏自动完成
功能 工作示例:
http://jsfiddle.net/9unaU/7/
更新 2:
编辑了 if 语句,以便仅在隐藏自动完成功能时才提交
工作示例 2:
http://jsfiddle.net/9unaU/10/
You can use the select and close events to renter edit mode
Here they are in your code:
Working Example:
http://jsfiddle.net/9unaU/6/
Update:
Made another change to ensure autocomplete is hidden on exitEditMode
Working Example:
http://jsfiddle.net/9unaU/7/
Update 2:
Edited the if statement so it only commits if the autocomplete is hidden
Working Example 2:
http://jsfiddle.net/9unaU/10/