【发布时间】:2019-11-29 17:17:39
【问题描述】:
这是我的 react js 应用程序中的一个 sn-p:
<form className="rcw-sender" onKeyDown={(e)=> e.keyCode == 13 ? {sendMessage}: ''} onSubmit={sendMessage}>
{this.state.active && <Container>
<EmojiPicker />
</Container>}
<button className="rcw-send" onClick={activateEmoji}>
<img src={emojibutton} className="rcw-send-icon" alt="send" />
</button>
<button className="rcw-send" onClick={activateMenu}>
<img src={menubutton} className="rcw-send-icon" alt="send" />
</button>
<input type="text" className="rcw-new-message" name="message" placeholder={placeholder} disabled={disabledInput}
autoFocus={autofocus} autoComplete="off" ref={this.input} />
<button type="submit" className="rcw-send">
<img src={send} className="rcw-send-icon" alt="send" />
</button>
</form>
在我的表单中,onSubmit={sendMessage} 在我按下提交按钮时被调用,这非常有效。但是我希望通过按回车键提交表单时调用相同的sendMessage。为此,我有此代码onKeyDown={(e)=> e.keyCode == 13 ? {sendMessage}: ''},我希望在按下回车键时调用sendMessage 方法,但它似乎不起作用。我想这样做是因为我的应用程序中有一个表情符号选择器,当我使用输入键提交表单时,表情符号选择器显示出来了。所以为了解决这个问题,我想在按下回车键提交表单时调用sendMessage 方法。使用提交按钮提交表单不会切换表情符号选择器的状态。这就是为什么作为快速解决问题的方法,我想在按下回车键时调用sendMessage 方法。我该怎么做?
【问题讨论】:
-
分享sendMessage函数代码。我猜你会添加 e.preventDefault()
-
问题是按下回车键时你没有调用sendMessage。只需将其更改为 sendMessage()
-
HTML button 的默认值是
type="submit",在文本输入中按 Enter 会触发submit事件,因此可能会调用第一个按钮的onClick处理程序...是否有问题如果您在前 2 个按钮中添加显式type="button"是否仍然存在? -
FTR
e.key === "Enter"更具可读性,not deprecated like e.keyCode
标签: javascript reactjs