如何通过hx-on在Enter键keyup事件后调用JavaScript函数?
解决HTMX中仅在Enter键keyup时触发函数的问题
正确的语法写法
你原来的事件过滤语法存在问题,HTMX的事件过滤需要正确引用事件对象属性,以下是两种有效写法:
方式1:明确使用event.key判断
<input type="text" name="description" placeholder="task" id="field-description" hx-on:keyup[event.key === 'Enter']="alert('foo')" >
方式2:使用属性简写(HTMX支持直接引用事件属性)
如果想简化代码,HTMX允许直接用事件对象的属性名,正确写法如下:
<input type="text" name="description" placeholder="task" id="field-description" hx-on:keyup[key === 'Enter']="alert('foo')" >
原写法失效原因
你之前的hx-on:keyup[key=='Enter']写法,一是单等号==的松散匹配可能存在兼容性问题,换成严格相等===更稳妥;二是部分环境下需要明确指定event.key才能正确获取按键值。
备选方案:使用keydown事件(更稳定)
如果keyup事件仍有异常,可以尝试keydown事件(Enter键的keydown触发逻辑通常更稳定),还能顺便阻止默认的表单提交行为:
<input type="text" name="description" placeholder="task" id="field-description" hx-on:keydown[event.key === 'Enter']="alert('foo'); event.preventDefault();" >
内容的提问来源于stack exchange,提问作者Sir Rubberduck
相关产品推荐
相关产品推荐

