React中的表单元素

在web应用开发当中,表单还是很重要的元素。

应用表单组件有:文本框(input、textarea)、单选按钮和复选框、Select组件。

文本框:文本框的状态改变即文本框中的内容的改变。此时的state应该是inputValue或者是textareaValue。在状态改变时的处理函数应该是

handleInputChange(e){
    this.setState({
        inputValue:e.target.value
    });
}

单选按钮和复选框:

1.单选按钮:它的状态state就是radioValue

this.state = {
    radioValue:‘‘
};
//在这里只是设置了radioValue的值,因为单选按钮本来就是只有一个按钮被选中
//当用户点击单选按钮的时候,就会通过下面的函数获取到选中的按钮的value
//即radioValue
handleChange(e){
    this.setState({
        radioValue:e.target.value,
    })
}

//下面通过===一次判断每个input标签的值和radioValue是否相等来判断checked的值是true还是false
<input
    type="radio"
    value="male"
    checked={radioValue === ‘male‘}
    onChange = {this.handleChange}
/>
<input
    type="radio"
    value="female"
    checked={radioValue === ‘female‘}
    onChange={this.handleChange}
/>

2.复选框:它的状态是通过一个数组来保存的,因为复选,即就应该保存选中的多个复选框,以便用户进行操作,从而改变状态而重新渲染。

this.state = {
    coffee:[],
}
//通过一个数组来保存状态
handleChange(e){
    const {checked,value} = e.target;
    let {coffee} = this.state;

    //判断这个复选框是否被选中
    if(checked && coffee.indexOf(value) === -1){
        coffee.push(value);
    }else{
        coffee = coffee.filter(i => i !== value);
    }

    this.setState({
        coffee,
    });
}

然后通过coffee.indexOf(‘aa‘) 去遍历coffee这个数组,是否能找到和aa相同的字符串,来进行复选框checked是true还是false的判断。

<p>请你选择你最喜欢的咖啡</p>
<label>
    <input
        type="checkbox"
        value="aa"
        checked={coffee.indexOf(‘aa‘) !== -1}
        onChange={this.handleChange}
    />
    aa
</label>
<br/>
<label>
    <input
        type="checkbox"
        value="bb"
        checked={coffee.indexOf(‘bb‘) !== -1}
        onChange={this.handleChange}
    />
</label>

Select组件:如果是单选,就用单个变量保存,如果是多选就用一个数组保存。

1.单选:

this.state = {
    area:‘‘,
}

handleChange(e){
    this.setState({
        area:e.target.value,
    });
}

render(){
    const {area} = this.state;

    return(
        <select value={area} onChange={this.handleChange}>
            <option value="beijing">北京</option>
            <option value="shanghai">上海</option>
            <option value="hangzhou">杭州</option>
        </select>
    )
}

2.多选

this.state = {
    area:[‘beijing‘,‘shanghai‘],
};

handleChange(e){
    const {options} = e.target;
    //注意,这里返回的options是一个对象,并非数组
    const area = Object.keys(options).
    filter(i => options[i].selected === true)
    .map(i => options[i].value);

    this.setState({
        area,
    });
}

render(){
    const {area} = this.state;
    return(
        <select multiple={true} value={area} onChange={this.handleChange}>
            <option value="beijing">北京</option>
            <option value="shanghai">上海</option>
            <option value="hangzhou">杭州</option>
        </select>
    );
}

原文地址:https://www.cnblogs.com/sminocence/p/8451255.html

时间: 2024-08-30 11:47:23

React中的表单元素的相关文章

React中的表单应用

React中的表单应用 用户在表单填入的内容,属于用户跟组件的互动,所以不能用this.props读取. var Input = React.createClass({ //初始化组件数据 getInitialState(){ return {value:'hello'}; }, handleChange(event){ this.setState({value:event.target.value}) }, render(){ var value = this.state.value; <di

React中reduxForm表单编辑

reduxForm中反写数据在输入框中,数据是从别的模块拉取 .关键代码如下 // 编辑应用表单 class EditCode extends React.Component { constructor(props) { super(props) } componentDidMount() { } // 取消编辑 handleBack=()=>{ window.history.go(-1); } // 确定编辑 handleFormSubmit=()=>{ const { handleSubm

关于struts中的表单元素- Form bean not specified on mapping for action: &quot;helloa.do&quot;报错

今天测试struts时仿照书上写了一个小的表单提交代码 1 <html:form action="helloa.do" method="post"> 2 <html:submit value="提交"></html:submit> 3 </html:form> 报 Form bean not specified on mapping for action: "helloa.do"

3.2 表单元素逐一介绍

下面讨论表单元素的类型及常用的属性. 本节单词记忆:标签 1.select 2.option 3.textarea 属性 1.text 2.password 3.radio 4.checkbox 5.name 6.value 7.reset 8.submit 9.button 网页学习网提示:html语言非常简单,不需要逻辑理解,而绝大部分朋友觉得它难以掌握,90%的原因在于英语单词不过关,所以每节记忆几个单词是非常有必要的. 1.文本框 在表单中最常用最常见的表单输入元素就是文本框(text)

bootstrap 表单元素、按钮、链接的禁用

在Bootstra中,表单元素,按钮通过在标签内设置 disabled 或 disabled="disabled" 可以禁用表单元素,按钮.链接需要加入class="disabled" 可以禁用链接. 文本框的禁用:<input class="form-control" id="disabledInput" type="text" placeholder="该输入框禁止输入..."

(四) HTML之表单元素

HTML中的表单元素,是构成动态网页的重要组成部分,因此,熟知表单元素是十分重要的.下面将根据表单中的一些常用标签进行介绍 1.单选按钮 <input type="radio" name="sex" value="man" checked/>男 <input type="radio" name="sex" value="weman"/>女 其中,name必须相同.

JavaScript中的表单编程

表单编程 1获取表单相关信息 1.什么是表单元素 1.什么是表单元素 在H TML中表单就是指form标签,它的作用是将用户输入或选择的数据提交给指定的服务器 2.如何获取表单元素 <form id="form1" name="form1"></form><script>//方法一:let fm = document.getElementbyId("fm");//方法二:let fm = document.fo

html5中form表单新增属性以及改良的input标签元素的种类

在HTML5中,表单新增了一些属性,input标签也有了更多的type类型,有些实现了js才能实现的特效,但目前有些浏览器不能全部支持.下面是一些h5在表单和input标签上的一些改动. <!DOCTYPE html><html> <head> <title>表单测试</title> <meta charset="utf-8" /> <!-- 在不支持h5的浏览器中,可以用CSS样式进行改写 --> &

第10章 表单元素(中)

第 10章表单元素[中]学习要点:1.type属性总汇2.type属性解析 本章主要探讨 HTML5中表单中 input元素的 type属性,根据不同的值来显示不同的输入框.一.type属性总汇input元素可以用来生成一个供用户输入数据的简单文本框.在默认的情况下,什么样的数据均可以输入.而通过不同的属性值,可以限制输入的内容. 属性名称 说明text 一个单行文本框,默认行为password 隐藏字符的密码框search 搜索框,在某些浏览器键入内容会出现叉标记取消submit.reset.