16 javascript jquery twitter-bootstrap reactjs react-bootstrap
我使用的阵营,引导下拉与输入一个内部的菜单项(否则控制台骂我遗漏的类型错误:无法读取的未定义的属性"专注")
好的,所以下拉渲染,输入在菜单项内(一切都很好),除非我在输入内部单击,下拉菜单关闭.
这是我的JSX
<Bootstrap.DropdownButton title={this.state.callIdTitle} id="callId">
<Bootstrap.MenuItem eventKey='1'>
<input ref="callIdInput" type='text' eventKey='2' placeholder='Enter Call ID' />
</Bootstrap.MenuItem>
</Bootstrap.DropdownButton>
Run Code Online (Sandbox Code Playgroud)
任何指向正确方向的人都非常感激,我一直在努力解决这个问题.
谢谢.
小智 8
我设法通过自定义onToggle for dropdown使其工作,如果click来自input元素则不会执行任何操作.我基本上结束了这样的事情:
所以像这样:
var React = require('react');
var ReactBootstrap = require('react-bootstrap'),
Dropdown = ReactBootstrap.Dropdown,
DropdownToggle = Dropdown.Toggle,
DropdownMenu = Dropdown.Menu,
Input = ReactBootstrap.Input,
MenuItem = ReactBootstrap.MenuItem;
module.exports = React.createClass({
displayName: 'DropdownWithInput',
setValue: function(e) {
var value = e.target.value;
this.setState({value: value});
},
onSelect: function(event, value) {
this.setState({value: value});
},
inputWasClicked: function() {
this._inputWasClicked = true;
},
onToggle: function(open) {
if (this._inputWasClicked) {
this._inputWasClicked = false;
return;
}
this.setState({open: open});
},
render: function() {
return (
<Dropdown id={this.props.id} open={this.state.open} onToggle={this.onToggle}
className="btn-group-xs btn-group-default">
<DropdownToggle bsStyle="default" bsSize="xs" className="dropdown-with-input dropdown-toggle">
Dropdown with input
</DropdownToggle>
<DropdownMenu>
<Input
type="text"
ref="inputElem"
autoComplete="off"
name={this.props.name}
placeholder="Type something here"
onSelect={this.inputWasClicked}
onChange={this.setValue}
/>
<MenuItem divider key={this.props.id + '-dropdown-input-divider'}/>
<MenuItem eventKey={1} onSelect={this.onSelect}>One</MenuItem>
<MenuItem eventKey={2} onSelect={this.onSelect}>Two</MenuItem>
<MenuItem eventKey={3} onSelect={this.onSelect}>Three</MenuItem>
</DropdownMenu>
</Dropdown>
);
}
});
Run Code Online (Sandbox Code Playgroud)
希望这也适合你.
小智 0
经过一整天......这就是我想出的。
我希望有更好的方法。
<Bootstrap.DropdownButton onClick={this.setFocusToCallIdInput} title={this.state.callIdTitle}>
<Bootstrap.MenuItem href="javascript:void(0);" eventKey='1'>
<Bootstrap.Input onClick={this.dontCloseMeBro} ref="callIdInput" type='text' onChange={this.callIdInputSelected} placeholder='Enter Call ID' />
</Bootstrap.MenuItem>
</Bootstrap.DropdownButton>
setFocusToCallIdInput:function(e){
console.log("Call Id clicked");
React.findDOMNode(this.refs.callIdInput).focus();
e.stopPropagation();
e.nativeEvent.stopImmediatePropagation();
},
dontCloseMeBro:function(e){
console.log("menu item clicked");
React.findDOMNode(this.refs.callIdInput).focus();
e.stopPropagation();
e.nativeEvent.stopImmediatePropagation();
},
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7968 次 |
| 最近记录: |