reactjs - 输入reactjs时如何屏蔽字符串
问题描述
这里的这个小宝贝可以遮住一根绳子
function format(value, pattern) {
var i = 0,
v = value.toString();
return pattern.replace(/#/g, _ => v[i++]);
}
console.log(format(123456789, '## ## ## ###'));
但我希望它在打字时掩盖它
解决方案
你可以onChange
在你的input
和 React 上使用state
来存储被屏蔽的输入。
它是如何工作的:
我使用 :
result.substr(0, result.indexOf('u'))
当输入不足以获得之前的内容时undefined
。如果用户刚刚删除了一些字符,我允许用户通过检查长度
target.value
而不应用掩码来删除一些字符。
class App extends React.Component {
constructor(props) {
super(props);
this.state = {
code: null,
}
}
format = (value, pattern) => {
let i = 0,
v = value.toString();
let result = pattern.replace(/#/g, _ => v[i++]);
if (value.replace(/\s/g, '').length < 9) {
return result.substr(0, result.indexOf('u'));
}
return result;
}
handleInput = ({target}) => {
// enable user to delete characters
if(this.state.code && (target.value.length < this.state.code.length)) {
this.setState({code: target.value})
return;
}
this.setState({
code: this.format(target.value.replace(/\s/g, ''), '## ## ## ###')
})
}
render() {
return (
<div>
<h1>Masked Input :</h1>
<input
onChange={this.handleInput}
value={this.state.code}
/>
</div>
);
}
}
React.render(<App />, document.getElementById('root'));
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/0.13.0/react.min.js"></script>
<div id="root"></div>
推荐阅读
- c# - 配置 .net adfs 声明感知示例应用程序
- html - Flexbox rearrange vertically and horizontally
- rest - What is the correct HTTP status code for search results not found?
- binding - BizTalk 2016 导出绑定错误消息
- javascript - The last result from the search is hidden by the bottomTabNavigaor
- docker - SSH keys keep getting deleted from Google Compute Engine VM
- javascript - Parsing CSS by javascript. Inconsistency across Edge and Chrome
- javascript - 如何从node.js中的/数中拆分字符串?
- reporting-services - SSRS dataset with DAX and multiple fact tables
- azure - How to parse a message in Azure IOT hub logic app