首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Daterangepicker输入未更新

Daterangepicker输入未更新
EN

Stack Overflow用户
提问于 2017-06-28 00:24:27
回答 1查看 1.3K关注 0票数 0

我在我的应用程序中使用https://github.com/skratchdot/react-bootstrap-daterangepicker。如果我选择了一个自定义范围,输入会在点击apply后更新。如果我选择了一个预定义的范围,那么小部件就会在没有点击apply按钮的情况下关闭。此外,预定义的范围也不会写入输入。

下面是react类的代码:

代码语言:javascript
复制
class DateTimePicker extends React.Component {
  constructor(props) {
    super(props);

    this.DATE_FORMAT = 'YYYY-MM-DD HH:mm:ss';

    this.ranges = {
			'Today': [moment().startOf('day'), moment().endOf('day')],
			'Yesterday': [moment().startOf('day').subtract(1, 'days'), moment().endOf('day').subtract(1, 'days') ],
			'Last 7 Days': [moment().subtract(6, 'days'), moment()],
			'Last 30 Days': [moment().subtract(29, 'days'), moment()],
			'This Month': [moment().startOf('month'), moment().endOf('month')],
			'Last Month': [moment().subtract(1, 'month').startOf('month'), moment().subtract(1, 'month').endOf('month')],
    };

    this._handleApply = this._handleApply.bind(this);    
  }

  _handleApply(event, picker) {
  	this.props.onChange(
  		picker.startDate.format(this.DATE_FORMAT), 
  		picker.endDate.format(this.DATE_FORMAT));
  }

  render() {
  	let startDate = moment(this.props.startDate);
  	let endDate = moment(this.props.endDate);

    let start = startDate.format(this.DATE_FORMAT);
    let end = endDate.format(this.DATE_FORMAT);
    let label = start + ' to ' + end;
    if (start === end) {
      label = start;
    }

    let locale = {
      format: 'YYYY-MM-DD HH:mm:ss',
      separator: ' to ',
      applyLabel: 'Apply',
      cancelLabel: 'Cancel',
      weekLabel: 'W',
      customRangeLabel: 'Custom Range',
      daysOfWeek: moment.weekdaysMin(),
      monthNames: moment.monthsShort(),
      firstDay: moment.localeData().firstDayOfWeek(),
    };

    return (
    	<div>
	    	Time frame:<br/>
				<DatetimeRangePicker
				  timePicker
				  timePicker24Hour
				  autoUpdateInput
          alwaysShowCalendars
				  locale={locale}
				  startDate={startDate}
				  endDate={endDate}
				  ranges={this.ranges}
				  onApply={this._handleApply}
				>
				  <div className='input-group'>
				    <input type='text' className='form-control' defaultValue={label}/>
				      <span className='input-group-btn'>
				          <button className='btn btn-default date-range-toggle'>
				            <BootstrapGlyphicon glyphicon='calendar'/>
				          </button>
				      </span>
				  </div>
				</DatetimeRangePicker>
			</div>
    );
  }

}
代码语言:javascript
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

EN

回答 1

Stack Overflow用户

发布于 2017-06-28 15:43:11

通过将"defaultValue“属性交换为"value”属性,解决了这个问题。现在,输入如下所示:

代码语言:javascript
复制
<input type='text' className='form-control' value={label} onChange={this._inputChanged}/>

我还是不知道背景。如果有人有详细的信息,我仍然感兴趣。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44785367

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档