I'm new to React.js. I'm trying to trigger keypress event for text div.
Here is text box code for which I want to execute keypress trigger.
<div id="test23" contenteditable="true" class="input" placeholder="type a message" data-reactid="137">Hii...</div>
and keypress method is:
onKeyPress: function(e) {
return "Enter" == e.key ? "Enter key event triggered" : void 0)
}
I tried it with jQuery but I can't trigger it.
Here is my React code that I tried but its not working:
var event = new Event('keypress', {
'keyCode' : 13,
'which' : 13,
'key' : 'Enter'
});
var node = document.getElementById('test23');
node.dispatchEvent(event);
I'm new to React.js. I'm trying to trigger keypress event for text div.
Here is text box code for which I want to execute keypress trigger.
<div id="test23" contenteditable="true" class="input" placeholder="type a message" data-reactid="137">Hii...</div>
and keypress method is:
onKeyPress: function(e) {
return "Enter" == e.key ? "Enter key event triggered" : void 0)
}
I tried it with jQuery but I can't trigger it.
Here is my React code that I tried but its not working:
var event = new Event('keypress', {
'keyCode' : 13,
'which' : 13,
'key' : 'Enter'
});
var node = document.getElementById('test23');
node.dispatchEvent(event);
Share
Improve this question
edited Mar 17, 2020 at 22:15
Brian Tompsett - 汤莱恩
5,88372 gold badges61 silver badges133 bronze badges
asked Jan 23, 2015 at 3:52
PiyushPiyush
1,5683 gold badges24 silver badges39 bronze badges
0
3 Answers
Reset to default 4If you create a reference to the div, then you can trigger an event on it. With hooks, you can use useRef
. Without hooks, you can use createRef
.
With hooks:
function MyComponent() {
const ref = useRef();
// This is simply an example that demonstrates
// how you can dispatch an event on the element.
useEffect(() => {
ref.dispatchEvent(new KeyboardEvent('keypress', {
key: 'Enter',
}));
}, []);
return (
<div
ref={ref}
id="test23"
contentEditable={true}
className="input"
placeholder="type a message"
data-reactid="137"
/>
);
}
Without hooks:
class MyComponent extends React.Component {
constructor(props) {
super(props);
this.ref = React.createRef();
}
// This is simply an example that demonstrates
// how you can dispatch an event on the element.
triggerKeyPress() {
this.ref.dispatchEvent(new KeyboardEvent('keypress', {
key: 'Enter',
}));
}
render() {
return (
<div
ref={this.ref}
id="test23"
contentEditable={true}
className="input"
placeholder="type a message"
data-reactid="137"
/>
);
}
}
el.dispatchEvent(new KeyboardEvent('keypress',{'key':'a'}));
If you're trying to create a keyboard event, you can make use of KeyboradEvent constructor.
An enter key event can be dispatched like:
const event = new KeyboardEvent('keypress', {
key: 'enter',
});
console.log(event) // KeyboardEvent {isTrusted: false, key: "enter", code: "", location: 0, ctrlKey: false, …}
FYI: The react-keydown package is good for implementing keyboard navigation or other shortcuts.
Test util Simulate is designed to trigger events during unit tests.