【发布时间】:2017-05-28 02:01:33
【问题描述】:
- 当文本框中的字符超过 3 个时,我需要为 texbox 添加边框。
- 所以我添加了 className wholeContainer
- 不确定何时添加 state 和 setState。我是否需要在 css 中为类名创建状态
- 你们能告诉我如何解决它吗?
- 在下面提供。
https://jsfiddle.net/q7yvmsa3/14/
class TwitterBox extends React.Component {
constructor(props) {
super(props);
this.state = { enteredTextBoxvalue : '' };
this.handleChange = this.handleChange.bind(this);
}
handleChange(event) {
this.setState({enteredTextBoxvalue: event.target.value});
console.log((event.target.value).legth);
if((event.target.value).legth > 3) {
this.setState({className : wholeContainer});
//console.log("long characters");
}
}
render() {
return (<div>Hello {this.props.name}
<textarea className={this.state.className}
value={this.state.enteredTextBoxvalue}
onChange = {this.handleChange}>
there should be only 140 characters
</textarea>
</div>);
}
}
ReactDOM.render(
<TwitterBox name="World" />,
document.getElementById('container')
);
【问题讨论】:
-
if((event.target.value).legth > 3) { => length 拼写不正确。很可能是报错,你能检查一下控制台吗?
-
this.setState({className : wholeContainer});是问题所在。除了 Paul 建议的拼写错误之外,您的其余代码都有效。因此未定义 WholeContainer。 -
@almostabeginner 嘿,但文本框变成红色...只有当我点击外部时
-
这是浏览器兼容性问题。在 IE 11 中对其进行了测试,它可以工作,但在 Chrome 中对其进行了测试,但它没有。 Chrome 仍然可以工作,但所选输入框的蓝色并没有被删除。可以看到颜色的变化,那是因为应用了红色,但没有覆盖“选中的输入框样式”。
-
这是它在 chrome 中的行为示例。 jsfiddle.net/cfztjbyq
标签: javascript html css reactjs redux