input react 表单
input 密码框在谷歌浏览器下 会有黄色填充 官网的不太用,这个比较好用 type="password" autoComplete="new-password"
HTML
index.jsx
import React, { Component } from 'react';
import { NavLink} from 'react-router-dom'; // import Checkbox from './checkbox.jsx';
// import AllCheck from './allcheck.jsx';
// import All from './all.jsx';
import All1 from './all1.jsx'; class View extends Component{
constructor(props){
super(props);
this.state = {
name:'',
year:'',
comp:'',
exp:{
year:'',
comp:'',
job:'',
},
resume:{
base:{
name:'',
age:'',
genders:'male'
},
exp:{
year:'',
comp:'',
job:'',
detail:'',
area:'lime'
}
}
}
}
// 单个input
handleChange(e){
// 获取 input 元素上的value
let value = e.target.value;
this.setState({
name:value
})
}
// 多个input
_handleChange(e){
// 获取 input 元素上的value
let name = e.target.name;
let value = e.target.value;
this.setState({
[name]:value
})
}
// 多个input exp
__handleChange(e){
// 获取 input 元素上的value
let name = e.target.name;
let value = e.target.value;
const exp = this.state.exp;
// year exp.year = value
// comp exp.comp = value
// job exp.job = value
exp[name] = value;
this.setState({exp})
}
// 多个input exp
___handleChange(e){
// 获取 input 元素上的value
let name = e.target.name;
let value = e.target.value;
const resume = this.state.resume;
const namekey = e.target.getAttribute('namekey');
// resume.base.name = name;
// resume.base.age = age;
// resume.exp.job = job;
resume[namekey][name] = value; this.setState({resume})
/**
第一步
设置state 默认值
第二步
写jsx 中 input
value
onChange
如果多input 或深层次
增加name属性
如果多个input 较深层次
除了 增加默认的name 还需自定义一个namekey
第三步
在onChange 方法中定义setState SP
对象的[]用法与场景
作业
1、实现checkbox
2、正选 反选
**/
}
render(){ return (
<div className="input_con">
<NavLink to="/">首页</NavLink><br/>
<NavLink to="/input">表单</NavLink><br/>
<NavLink to="/event">事件</NavLink><br/>
<NavLink to="/tab">tab</NavLink>
<h2>input 表单课</h2>
<ul>
<li>用户名:{this.state.name}</li>
<li>
<label>用户名</label>
<div className="lable_ctrl">
<input type="text" value={this.state.name}
placeholder="请输入用户名" onChange={(e)=>this.handleChange(e)}/>
</div>
</li>
</ul>
<ul>
<li>工作年限:{this.state.year}</li>
<li>
<label>工作年限</label>
<div className="lable_ctrl">
<input type="text" name="year" value={this.state.year}
placeholder="请输入工作年限" onChange={(e)=>this._handleChange(e)}/>
</div>
</li>
<li>公司名称:{this.state.comp}</li>
<li>
<label>公司名称</label>
<div className="lable_ctrl">
<input type="text" name="comp" value={this.state.comp}
placeholder="请输入公司名称" onChange={(e)=>this._handleChange(e)}/>
</div>
</li>
</ul>
<ul>
<li>工作年限:{this.state.exp.year}</li>
<li>
<label>工作年限</label>
<div className="lable_ctrl">
<input type="text" name="year" value={this.state.exp.year}
placeholder="请输入工作年限" onChange={(e)=>this.__handleChange(e)}/>
</div>
</li>
<li>工作年限:{this.state.exp.comp}</li>
<li>
<label>公司名称</label>
<div className="lable_ctrl">
<input type="text" name="comp" value={this.state.exp.comp}
placeholder="请输入公司名称" onChange={(e)=>this.__handleChange(e)}/>
</div>
</li>
<li>工作职责:{this.state.exp.job}</li>
<li>
<label>工作职责</label>
<div className="lable_ctrl">
<input type="text" name="job" value={this.state.exp.job}
placeholder="请输入工作职责" onChange={(e)=>this.__handleChange(e)}/>
</div>
</li>
</ul>
<h2>resume</h2>
<ul>
<li>姓名:{this.state.resume.base.name}</li>
<li>
<label>姓名</label>
<div className="lable_ctrl">
<input type="text" name="name" namekey="base" value={this.state.resume.base.name}
placeholder="请输入姓名" onChange={(e)=>this.___handleChange(e)}/>
</div>
</li>
<li>年龄:{this.state.resume.base.age}</li>
<li>
<label>年龄</label>
<div className="lable_ctrl">
<input type="text" name="age" namekey="base" value={this.state.resume.base.age}
placeholder="请输入年龄" onChange={(e)=>this.___handleChange(e)}/>
</div>
</li>
<li>工作职责:{this.state.resume.exp.job}</li>
<li>
<label>工作职责</label>
<div className="lable_ctrl">
<input type="text" name="job" namekey="exp" value={this.state.resume.exp.job}
placeholder="请输入工作职责" onChange={(e)=>this.___handleChange(e)}/>
</div>
</li>
<li>工作详情:{this.state.resume.exp.detail}</li>
<li>
<label>工作详情</label>
<div className="lable_ctrl">
<textarea name="detail" namekey="exp" value={this.state.resume.exp.detail} onChange={(e)=>this.___handleChange(e)}></textarea>
</div>
</li>
<li>手机号的区号:{this.state.resume.exp.area}</li>
<li>
<label>手机号的区号</label>
<div className="lable_ctrl">
<select name="area" namekey="exp" defaultValue={this.state.resume.exp.area} onChange={(e)=>this.___handleChange(e)}>
<option value="grapefruit">葡萄柚</option>
<option value="lime">酸橙</option>
<option value="coconut">椰子</option>
<option value="mango">芒果</option>
</select>
</div>
</li>
<li>性别:{this.state.resume.base.genders}</li>
<li>
<label>性别</label>
<div className="lable_ctrl">
<label>男<input type="radio" name="genders" namekey="base" value="male" onClick={(e)=>this.___handleChange(e)} defaultChecked={this.state.resume.base.genders==='male'}/></label>
<label htmlFor="gender">女</label><input name="genders" namekey="base" value="female" id="gender" type="radio" defaultChecked={this.state.resume.base.genders==='female'} onClick={(e)=>this.___handleChange(e)}/>
</div>
</li>
</ul>
<All1/>
</div>
)
}
}
export default View; React JSX
all1.jsx
import React , { Component } from 'react';
class View extends Component {
constructor(props){
super(props);
this.state = {
isGoing:false,
checkNode:[
{checked:false,name:"Vue"},
{checked:false,name:"React"},
{checked:false,name:"Angular"},
{checked:false,name:"Ember"},
{checked:false,name:"Omi"},
]
}
}
handleInputChange(e){
let checked = e.target.checked;
let name = e.target.name;
if(checked){
this.state.checkNode.forEach(v=>{
v.checked = true;
})
}else {
const obj = this.state.checkNode;
for(let index in obj){
obj[index].checked = false;
}
}
this.setState({
[name]:checked
})
}
handleChange(e,key){
const checkNode = this.state.checkNode;
checkNode[key].checked = !checkNode[key].checked
// this.state.checkNode[0].checked
let bTrue = true;
for(let i=0,len=checkNode.length;i<len;i++){
if(!checkNode[i].checked){
bTrue = false;
break;
}
}
this.setState({
isGoing:bTrue,
checkNode
})
}
render(){
// console.log(this.state.isGoing)
const checkList = this.state.checkNode.map((val,key)=>(
<p key={key}>
<input type="checkbox"
checked={val.checked}
onChange={(e)=>this.handleChange(e,key)}
/>
<label>{val.name}</label>
</p>
))
return(
<div>
<h2>今天要讲checkbox 的demo</h2>
<input
name="isGoing"
type="checkbox"
checked={this.state.isGoing}
onChange={(e)=>this.handleInputChange(e)} />
{checkList}
</div>
)
}
}
export default View;

react Input 表单的更多相关文章

  1. react中使用Input表单双向绑定方法

    input react 表单 input 密码框在谷歌浏览器下 会有黄色填充 官网的不太用,这个比较好用 type="password" autoComplete="ne ...

  2. React之表单

    第一部分:表单基础 在React中,修改表单的唯一途径是使用setState方法.举例如下: class NameForm extends React.Component { constructor( ...

  3. 兼容IE8以下浏览器input表单属性placeholder不能智能提示功能

    当前很多表单提示使用了表单属性placeholder,可这属性不兼容IE8以下的浏览器,我自己写了一个兼容处理js // 兼容IE8以下浏览器input不能智能提示功能 if(navigator.ap ...

  4. 不让input表单的输入框保存用户输入的历史记录

    如何不让input表单的输入框保存用户输入的历史记录.  有时我们在设计网页时不想让表单保存用户输入历史记录,比如一些隐私数据,或一些冲值卡 <input name="test&quo ...

  5. input type类型和input表单属性

    一.input type类型 1.Input 类型 - email 在提交表单时,会自动验证 email 域的值. E-mail: <input type="email" n ...

  6. css修改input表单默认样式重置与自定义大全

    链接地址: 伪元素表单控件默认样式重置与自定义大全 http://www.zhangxinxu.com/wordpress/?p=3381 Chrome 现在不支持通过伪元素修改 meter 元素样式 ...

  7. JavaWeb后台从input表单获取文本值的两种方式

    JavaWeb后台从input表单获取文本值的两种方式 #### index.html <!DOCTYPE html> <html lang="en"> & ...

  8. 解决chrome浏览器对于自动填充的input表单添加的默认的淡黄色背景问题 && 一般的浏览器input和button的高度不一致问题

    解决chrome浏览器对于自动填充的input表单添加的默认的淡黄色背景问题 如果我们把一个表单设置位 autofocus ,这时这个表单在获取焦点后就会产生淡黄色的背景,我们就是使用!importa ...

  9. 让input表单输入框不记录输入过信息的方法

    有过表单设计经验的朋友肯定知道,当我们在浏览器中输入表单信息的时候,往往input文本输入框会记录下之前提交表单的信息,以后每次只要双击input文本输入框就会出现之前输入的文本,这样有时会觉得比较方 ...

随机推荐

  1. C/C++ Qt MdiArea 多窗体组件应用

    MDI多窗体组件,主要用于设计多文档界面应用程序,该组件具备有多种窗体展示风格,其实现了在父窗体中内嵌多种子窗体的功能,使用MDI组件需要在UI界面中增加mdiArea控件容器,我们所有的窗体创建与操 ...

  2. 在Winform框架的多文档界面中实现双击子窗口单独弹出或拖出及拽回的处理

    在基于DevExpress的多文档窗口界面中,我们一般使用XtraTabbedMdiManager来管理多文档窗口的一些特性,如顶部菜单,页面的关闭按钮处理,以及一些特殊的设置,本篇随笔介绍这些特点, ...

  3. UOJ #228 - 基础数据结构练习题(势能线段树+复杂度分析)

    题面传送门 神仙题. 乍一看和经典题 花神游历各国有一点像,只不过多了一个区间加操作.不过多了这个区间加操作就无法再像花神游历各国那样暴力开根直到最小值为 \(1\) 为止的做法了,稍微感性理解一下即 ...

  4. R语言与医学统计图形【3】条形图、误差图

    R语言基础绘图系统 基础图形--条形图.误差图 3.条形图 barplot接收的数据是矩阵而非数据框. data <- sample(c(50:80),5) barplot(data,col=h ...

  5. PDFium 渲染

    PDFium 是 Chromium 的 PDF 渲染引擎,许可协议为 BSD 3-Clause.不同于 Mozilla 基于 HTML5 的 PDF.js,PDFium 是基于 Foxit Softw ...

  6. 《Redis设计与实现》知识点目录

    Redis设计与实现 第一部分 数据结构与对象 第二章 简单动态字符串 p8 简单动态字符串SDS 2.1 SDS的定义 p9 每个sds.h/sdshdr结构表示一个SDS值 2.2 SDS与C字符 ...

  7. Office2020-2021 离线安装教程

    首先:先安装两个 net .再安装 office 如下: DownFile:https://pan.baidu.com/s/19iykxwofXK36wWY5w4GVFg  codenum:6666

  8. Vue函数防抖和函数节流

    函数防抖(debounce) 应用场景 登录.发短信等按钮避免用户点击太快,以致于发送了多次请求,需要防抖 调整浏览器窗口大小时,resize 次数过于频繁,造成计算过多,此时需要一次到位,就用到了防 ...

  9. 理解ASP.NET Core - 模型绑定&验证(Model Binding and Validation)

    注:本文隶属于<理解ASP.NET Core>系列文章,请查看置顶博客或点击此处查看全文目录 模型绑定 什么是模型绑定?简单说就是将HTTP请求参数绑定到程序方法入参上,该变量可以是简单类 ...

  10. Oracle SQL中join方式总结

    在ORACLE数据库中,表与表之间的SQL JOIN方式有多种(不仅表与表,还可以表与视图.物化视图等联结).SQL JOIN其实是一个逻辑概念,像NEST LOOP JOIN. HASH JOIN等 ...