में बाल घटकों पर ध्यान केंद्रित करने का क्लीनर तरीका मैं प्रतिक्रिया का उपयोग कर इनपुट की सूची में फोकस ऊपर और नीचे स्थानांतरित करने के लिए तीर कुंजियों का उपयोग करने के लिए एक क्लीनर तरीका जानने का प्रयास कर रहा हूं। सूची मूल घटक है, बच्चों को इनपुट करें। यह पता लगाने के लिए कि अगला इनपुट किस पर ध्यान केंद्रित किया जाना चाहिए, मैं प्रत्येक बच्चे को ref
के साथ-साथ एक संख्यात्मक id
दे रहा हूं जिसे मैं ऑर्डर करने के लिए उपयोग करता हूं। जब एक तीर कुंजी का पता लगाया जाता है, तो कॉलबैक तब बच्चे को सही ref
के साथ पाता है और इनपुट को पकड़ने और इसे ध्यान देने के लिए उस बच्चे के refs
में जाता है।प्रतिक्रिया
मैं प्रतिक्रिया में नया हूं, यह काफी गंदा लगता है, इस प्रकार मैं सोच रहा हूं कि क्लीनर समाधान है या नहीं।
कोड और काम jsfiddle:
var Child = React.createClass({
handleUp: function(e) {
switch(e.key) {
case "ArrowDown":
this.props.handleFocus(this.props.id+1);
break;
case "ArrowUp":
this.props.handleFocus(this.props.id-1);
break;
}
},
render: function() {
return <div><input defaultValue={this.props.name} onKeyUp={this.handleUp} ref="input" /></div>;
}
});
var Parent = React.createClass({
handleFocus: function(id) {
var child = this.refs['child' + id];
if (!child) return;
var input = child.refs.input;
input.getDOMNode().focus();
},
render: function() {
var inputs = [];
for (var i=0; i<10; i++) {
inputs.push(<Child key={i} id={i} name={"value" + i} handleFocus={this.handleFocus} ref={'child' + i} />);
}
return <div>
{inputs}
</div>;
}
});
http://jsfiddle.net/69z2wepo/509/
इनपुट तत्वों पर बस एक सही टैब इंडेक्स सेट करना आसान नहीं होगा और उपयोगकर्ता को टैब कुंजी (पीछे की ओर Shift + टैब) के साथ इनपुट फ़ील्ड नेविगेट करना होगा, जो इसे करने का मानक तरीका है। http://www.w3.org/TR/1999/REC-html401-19991224/interact/forms.html#adef-tabindex –
इस विशेष परिदृश्य के लिए मैं वास्तव में तीर कुंजियां लेना चाहता था लेकिन आम तौर पर टैब टैब एक हैं अच्छा विचार – mikhuang
आपका jsfiddle काम नहीं करता – Soorena