fix(editor): 语言下拉展开时 Enter 不误触发插入

<select> 展开时 Enter 用于确认选项,不应提交整个弹框。
HTMLSelectElement.open 浏览器存在但 TS lib.dom 未声明,用交叉类型断言。
This commit is contained in:
xfy 2026-07-06 14:15:25 +08:00
parent 9b4c0ea36e
commit 0b4346ecd4

View File

@ -582,6 +582,9 @@ export function openRunnableModal(editor: Editor): void {
// Enter 在表单元素内提交(浏览器原生 number input 的 Enter 不会触发 click // Enter 在表单元素内提交(浏览器原生 number input 的 Enter 不会触发 click
// 注意:网络 checkbox 的 tagName 也是 'input'Enter 会触发提交而非切换 // 注意:网络 checkbox 的 tagName 也是 'input'Enter 会触发提交而非切换
// checkbox 原生用 Space 切换),符合模态框 Enter=确认的惯例。 // checkbox 原生用 Space 切换),符合模态框 Enter=确认的惯例。
// 例外:语言 <select> 下拉展开时 Enter 用于确认选项,不应触发插入。
// HTMLSelectElement.open 在浏览器存在,但 TS lib.dom 未声明,需断言。)
if ((langSelect as HTMLSelectElement & { open: boolean }).open) return;
const tag = (document.activeElement?.tagName ?? '').toLowerCase(); const tag = (document.activeElement?.tagName ?? '').toLowerCase();
if (tag === 'input' || tag === 'select') { if (tag === 'input' || tag === 'select') {
e.preventDefault(); e.preventDefault();