5.表单详解,获取input的text,select,radio,checkbox,textarea的值

文章目录

内容

详解表单获取input的text,select,radio,checkbox,textarea的值

详细例子

class ReactForm extends React.Component {
    constructor(props) {
        super(props);
        this.state = {
            name: '张三',
            sex: 1,
            city: '',
            citys: ['北京', '上海', '广州'],
            hobby: [
                { title: '吃饭', checked: true },
                { title: '睡觉', checked: false },
                { title: '写代码', checked: true }
            ],
            remark: ''
        };
    }

    handleName = (e) => {
        this.setState({
            name: e.target.value
        })
    }

    submit = (e) => {
        let params = {
            name: this.state.name
        }
        console.log('params: ', params);
    }

    handleSex = (e) => {
        let val = e.target.value;
        this.setState({
            sex: val
        })
    }

    handleCity = (e) => {
        this.setState({
            city: e.target.value
        })
    }

    handleHobby = (key)=>{
        let hobby = this.state.hobby;
        hobby[key].checked = !hobby[key].checked;
        this.setState({
            hobby: hobby
        })
    }

    handleRemark = (e)=> {
        let val = e.target.value;
        this.setState({
            remark: val
        })
    }

    submit = (e)=>{
        e.preventDefault()
        console.log(this.state);
    }
    
    render() {
        return (
            <div>
                <form onSubmit={this.submit}>

                    用户名:<input type="text" value={this.state.name} onChange={this.handleName} />
                    <br /><br />

                    性别:
                        <input type="radio" value='1' checked={this.state.sex == 1} onChange={this.handleSex} />男  &nbsp;
                        <input type="radio" value='2' checked={this.state.sex == 2} onChange={this.handleSex} />女 <br /><br />

                    城市:
                    <select value={this.state.city} onChange={this.handleCity}>
                        {
                            this.state.citys.map((value, key) => {
                                return (
                                    <option key={key}>{value}</option>
                                )
                            })
                        }
                    </select>
                    <br /><br />

                    爱好:
                    {
                        this.state.hobby.map((value, key) => {
                            return (
                                <span key={key}>
                                    <input type="checkbox" checked={value.checked} onChange={this.handleHobby.bind(this,key)}/>{value.title}
                                </span>
                            )
                        })
                    }
                    <br /><br />

                    备注:<textarea value={this.state.remark} onChange={this.handleRemark}></textarea>


                    <br /><br />
                    <button type='submit'>提交</button>

                    <div> {this.state.name},{this.state.sex},{this.state.city} </div>
                </form>
            </div>
        );
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值