UNPKG

nuke-normal-input

Version:

输入框

138 lines (113 loc) 3.51 kB
# Input demo - order: 2 各种截断 --- ````js /** @jsx createElement */ import {createElement, Component,findDOMNode,render } from 'rax'; import View from 'nuke-view'; import Text from 'nuke-text'; import Input from 'nuke-normal-input'; import Icon from 'nuke-icon'; import Env from 'nuke-env'; const {isWeex} = Env; import Button from 'nuke-button'; import Page from 'nuke-page'; let App = class NukeDemoIndex extends Component { constructor() { super(); this.state = { value1:'', } } change = (value,e) => { // 设置一遍 value1 this.setState({value1:value}); if(value.length > 5 ){ value = value.substring(0,5); this.setState({ value1 : value }) } } input = (e) => { // console.log(e); } numberOnly = (e)=>{ let value = isWeex ? e.value : e.target.value; // 设置一遍 value2 this.setState({ value2 : value }); // 过滤数字 let newVal = value.replace(/\D/g,''); if(newVal !== value){ // 过滤后需要再设置 value2 this.setState({ value2 : newVal}) console.log('value2',this.state.value2) } } setValue= (e)=>{ let value = isWeex ? e.value : e.target.value; // 设置一遍 value2 this.setState({ value3 : value }); } clear= (e)=>{ let value = isWeex ? e.value : e.target.value; // 设置一遍 value2 this.setState({ value3 : value }); this.setState({ value3 : '' }); } render() { return ( <Page title="Input"> <Page.Intro main="onChange 配合验证字数" sub="超出5个字就截断"></Page.Intro> <Input ref="myinput" value={this.state.value1} onInput={this.input} onChange={this.change}/> <View style={[styles.lineWithMargin,styles.textLine]}> <Text style={styles.text}>用户输入:{this.state.value1}</Text> </View> <Page.Intro main="onInput 配合验证合法性" sub="只能输入数字"></Page.Intro> <Input ref="myinput" value={this.state.value2} onInput={this.numberOnly} onChange={(value,e)=>this.numberOnly(e)}/> <View style={[styles.lineWithMargin,styles.textLine]}> <Text style={styles.text}>用户输入:{this.state.value2}</Text> </View> <Page.Intro main="清除按钮"></Page.Intro> <View style={styles.clearInputWrap}> <Input ref="myinput" value={this.state.value3} onChange={(value,e)=>this.setValue(e)}/> <Icon onClick={this.clear} name="close"></Icon> </View> </Page> ); } } const styles={ lineWithMargin:{ marginLeft:'30rem', marginRight:'30rem', }, textLine:{ marginTop:'20rem', marginBottom:'40rem', }, text:{ fontSize:'26rem' }, btns:{ margin:'30rem', }, btn:{ marginBottom:'30rem' }, clearInputWrap:{ marginLeft:'30rem', marginRight:'30rem', flexDirection:'row', justifyContent:'center', borderWidth:1, borderStyle:'solid', borderColor:'yellow' }, input:{ borderWidth:0, borderStyle:'solid', borderColor:'yellow' } } render(<App/>); ````