Ich habe ein Feld, das ein Datum mit der folgenden Komponente zeigt:ReactJS ersetzen Inhalt
import React from 'react';
import Moment from 'moment';
export default class ChaserField extends React.Component {
render() {
return (
<div onClick={this.props.onClick}>
{this.props.chaserDate != '0000-00-00' && this.props.chaserDate ? Moment(this.props.chaserDate).format('DD/MM/YYYY') : '-'}
</div>
);
}
}
Die Mutter:
import React from 'react';
import Moment from 'moment';
import TrackingSentField from './TrackingSentField';
import ChaserField from './ChaserField';
export default class ShippingTable extends React.Component {
static contextTypes = {}
componentWillMount() {
this.setState({
editingChaser: false,
editingTrackingSent: false
})
}
handleTrackingSentField(e) {
this.setState({
editingTrackingSent: true
})
}
handleChaserField(e) {
this.setState({
editingChaser: true
})
}
render() {
var rowData = this.props.rows.map((row) => {
return (
<tr key={row.id}>
<td>{row.position_ref}</td>
<td>{row.quantity}</td>
<td><a target="_blank" href={'/supplier/'+row.supplierId}>{row.name}</a></td>
<td>{row.warehouse_eta != '0000-00-00' && row.warehouse_eta ? Moment(row.warehouse_eta).format('DD/MM/YYYY') : '-'}</td>
<td>{row.customer_eta != '0000-00-00' && row.customer_eta ? Moment(row.customer_eta).format('DD/MM/YYYY') : '-'}</td>
<td><ChaserField onClick={this.handleChaserField.bind(this)} chaserDate={row.chaserETA}/></td>
<td><TrackingSentField onClick={this.handleTrackingSentField.bind(this)} trackingDate={row.customer_tracking}/></td>
<td><img title={row.img_title} src={row.img}/></td>
</tr>
)
});
return (
<table className="table table-condensed table-hover">
<thead>
<col width="40"/>
<col width="50"/>
<col width="230"/>
<col width="80"/>
<col width="80"/>
<col width="80"/>
<col width="80"/>
<col width="53"/>
<tr>
<th></th>
<th>QTY</th>
<th>Supplier</th>
<th>WETA</th>
<th>CETA</th>
<th>Chase</th>
<th>Track' sent</th>
<th>Status</th>
</tr>
</thead>
<tbody>
<col width="40"/>
<col width="50"/>
<col width="230"/>
<col width="80"/>
<col width="80"/>
<col width="80"/>
<col width="80"/>
<col width="53"/>
{rowData}
</tbody>
</table>
)
}
}
Was will ich passieren wird, wenn ich auf dem div klicken, ist es Inhalt, um zu einem Datumseingabefeld zu wechseln, und wenn der Benutzer das Datum für das Speichern beendet hat, wenn er darauf klickt oder Enter drückt.
Wie kann das gemacht werden?
Schlägt die Eingabe von Schlägen das Ereignis onBlur ein? – imperium2335
Nein, ich glaube nicht. Um das zu bekommen, müssten Sie den Schlüsselcode überprüfen, der Teil des keypress-Ereignisses ist. Alternativ können Sie Ihre Eingabe in ein Formular schreiben und das Formular onSubmit callback verwenden, das wahrscheinlich durch Drücken der Eingabetaste ausgelöst wird. Vielleicht wäre der Event-Key-Code-Ansatz robuster. –
Das wäre viel einfacher als einen gleichmäßigen Hörer auf das Fenster zu kleben? h. window.addEventListener ('mousedown', this.props.pageClick.bind (this), false); – imperium2335