我使用了反应材料的TextField
- ui。我想知道用户是否按下了Ctrl + Enter。我尝试过使用onKeyPress
事件但没有结果。我怎样才能做到这一点?
<TextField
value={this.state.message}
autoFocus={true}
hintText='Type your message here'
onChange={this.onChangeMessage}
onKeyPress={(event) => {
if (event.ctrlKey && event.keyCode == '13')
this.sendMessage();
}}
multiLine={true}
/>
答案 0 :(得分:7)
onKeyPress
是React支持的合成Key事件,如上所述here。试试这段代码:
onKeyPress= (e) => {
if (e.key === 'Enter') {
console.log('Enter key pressed');
// write your functionality here
}
}
答案 1 :(得分:5)
也许您应该尝试使用onKeyUp而不是onKeyPress
<TextField
value={this.state.message}
autoFocus={true}
hintText='Type your message here'
onChange={this.onChangeMessage}
onKeyUp={(event) => {
if (event.ctrlKey && event.key== 'Enter')
this.sendMessage();
}}
multiLine={true}
/>
答案 2 :(得分:1)
为此,您最好使用onKeyDown
。这是原因(link):
因此,代码将是:
onKeyDown={(e) => {
if (e.key === "Enter") {
desiredFunction();
}
}}
答案 3 :(得分:1)
使用material-ui和打字稿,
<TextInput
id="password"
label="Password"
type="password"
onKeyPress={(data: any) => {
if (data.charCode === 13) {
console.log("Key `Enter` pressed");
}
}}
value={password}
onChange={(event: React.ChangeEvent<HTMLInputElement>) =>
this.setState({ password: event.target.value })
}
/>
答案 4 :(得分:0)
请使用以下代码
更新onKeyPress事件if ((event.keyCode == 10 || event.keyCode == 13) && event.ctrlKey)
的链接