admin管理员组文章数量:1244246
I am using this datepicker in my demo application
but my datepicker opens when I clicked on input field.can we open date picker when user click on button and icon on right side instead of input click ?
import React from "react";
import ReactDOM from "react-dom";
import DatePicker from "react-datepicker";
import "react-datepicker/dist/react-datepicker.css";
import "./styles.css";
class Example extends React.Component {
constructor(props) {
super(props);
this.state = {
startDate: new Date()
};
this.handleChange = this.handleChange.bind(this);
}
handleChange(date) {
this.setState({
startDate: date
});
}
openDatePicker = () => {};
render() {
return (
<div>
<DatePicker
selected={this.state.startDate}
onChange={this.handleChange}
/>
<button onClick={this.openDatePicker}>openDate</button>
</div>
);
}
}
const rootElement = document.getElementById("root");
ReactDOM.render(<Example />, rootElement);
I am using this datepicker in my demo application
https://www.npmjs./package/react-datepicker but my datepicker opens when I clicked on input field.can we open date picker when user click on button and icon on right side instead of input click ?
import React from "react";
import ReactDOM from "react-dom";
import DatePicker from "react-datepicker";
import "react-datepicker/dist/react-datepicker.css";
import "./styles.css";
class Example extends React.Component {
constructor(props) {
super(props);
this.state = {
startDate: new Date()
};
this.handleChange = this.handleChange.bind(this);
}
handleChange(date) {
this.setState({
startDate: date
});
}
openDatePicker = () => {};
render() {
return (
<div>
<DatePicker
selected={this.state.startDate}
onChange={this.handleChange}
/>
<button onClick={this.openDatePicker}>openDate</button>
</div>
);
}
}
const rootElement = document.getElementById("root");
ReactDOM.render(<Example />, rootElement);
Share
Improve this question
asked Dec 7, 2018 at 0:36
user944513user944513
12.7k51 gold badges185 silver badges347 bronze badges
2 Answers
Reset to default 7Yes, it is possible to make it open other than clicking the ponent itself. You can control it by using the open
property of the Datepicker. Here's a modified version of your code:
import React from "react";
import ReactDOM from "react-dom";
import DatePicker from "react-datepicker";
import "react-datepicker/dist/react-datepicker.css";
import "./styles.css";
class Example extends React.Component {
constructor(props) {
super(props);
this.state = {
startDate: new Date(),
datePickerIsOpen: false,
};
this.handleChange = this.handleChange.bind(this);
this.openDatePicker = this.openDatePicker.bind(this)
}
handleChange(date) {
this.setState({
startDate: date
});
}
openDatePicker() {
this.setState({
datePickerIsOpen: !this.state.datePickerIsOpen,
});
};
render() {
return (
<div>
<button onClick={this.openDatePicker}>openDate</button>
<DatePicker
selected={this.state.startDate}
onChange={this.handleChange}
onClickOutside={this.openDatePicker}
open={this.state.datePickerIsOpen}
/>
</div>
);
}
}
const rootElement = document.getElementById("root");
ReactDOM.render(<Example />, rootElement);
As you can see, we have added a state to the Example class, which controls the open
property of the Datepicker. I also added the onClickOutside, which can be used to determine what should happen if the user clicks outside the datepicker once it's open.
You need to set the button as a customInput
import React from 'react'
const CustomInput = React.forwardRef((props,ref) => {
return (
<button onClick={props.onClick} ref={ref}>
{props.value || props.placeholder}
</button>
)
})
export default CustomInput;
Then in the main ponent. do this
import React from "react";
import ReactDOM from "react-dom";
import DatePicker from "react-datepicker";
import CustomInput from "./CustomInput"
import "react-datepicker/dist/react-datepicker.css";
import "./styles.css";
class Example extends React.Component {
constructor(props) {
super(props);
this.state = {
startDate: new Date()
};
this.handleChange = this.handleChange.bind(this);
}
handleChange(date) {
this.setState({
startDate: date
});
}
render() {
return (
<div>
<DatePicker
selected={this.state.startDate}
onChange={this.handleChange}
customInput={<CustomInput />}
placeholderText="openDate"
/>
</div>
);
}
}
const rootElement = document.getElementById("root");
ReactDOM.render(<Example />, rootElement);
本文标签: javascripthow to open datepicker on button click or icon click in react jsStack Overflow
版权声明:本文标题:javascript - how to open datepicker on button click or icon click in react js - Stack Overflow 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1740193012a2239432.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论