这个功能如果是用传统型的jquery来写都要花费很多时间才可以完成的案例,

亲测jquery配合bootstrap来写和bootstrap配合react.js来写,不知不觉中有点震惊。。。

jquery版本代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<link rel="stylesheet" href="./css/bootstrap.css">
<script src="./js/jq18m.js"></script>
<script src="./js/bootstrap.js"></script> </head>
<body>
<div class="container">
<br><br>
<div class="well">
<textarea class="form-control" rows="10"></textarea>
<br>
<span>150</span>
<button class="btn btn-default btn-primary pull-right" id="sub">OK</button>
<button class="btn btn-default pull-right" id="pic">Add Pic</button>
</div>
</div>
<script>
//$('#sub').attr('disabled',true);
$('#sub').prop('disabled',true);
$('textarea').on('input',function(){
//alert('test');
var len = $(this).val().length;
if(len>0){
$('#sub').prop('disabled',false); }else{
$('#sub').prop('disabled',true);
}
$('span').text(150 - len);
}); $('#pic').on('click',function(){
$(this).toggleClass('uppic');
var len = $('textarea').val().length;
if($(this).hasClass('uppic')){
$('span').text(150 - len - 24);
//已经upload了图片
$(this).text('√ upload_OK');
}else{
//还没upload图片
$(this).text('Add Pic');
$('span').text(150 - len);
} //判断下看下是否有内容
var lens = $('span').text();
if(lens< 150){
$('#sub').prop('disabled',false);
}else{
$('#sub').prop('disabled',true);
}
});
</script>
</body>
</html>

react.js版本如下:

<!DOCTYPE>
<html>
<head>
<meta charset="utf-8">
<title></title>
<link rel="stylesheet" href="./css/bootstrap.css">
<script src="./js/jq11_1.js"></script>
<script src="./js/bootstrap.js"></script>
<script src="./js/react.js"></script>
<script src="./js/react-dom.js"></script>
<script src="./js/browser.min.js"></script>
<style>
*{ margin:0px; padding:0px;} </style>
</head>
<body>
<div id="dome" class="container"></div>
<div id="test"></div>
<script type="text/babel">
var Fix = React.createClass({
getInitialState:function(){
return{
text:'',//表示大文本域的内容
uploaded:false //表示是否上传图片,默认否
}
},
//计算剩余字数的方法
fontCount:function(){
//总数:150字
//要考虑text的长度和是否已经上传图片了
if(this.state.uploaded){
return 150 - 25 -this.state.text.length;
}else{
return 150 - this.state.text.length;
}
},
handleChange:function(e){
this.setState({
text:e.target.value
}); },
handleUpload:function(){
this.setState({
uploaded:!this.state.uploaded
});
},
render:function(){
return(
<div>
<br /><br />
<div className="well">
<textarea className="form-control" rows="10" onChange={this.handleChange} >
{this.props.text}</textarea>
<br />
<span>{this.fontCount()}</span>
<button className="btn btn-default btn-primary pull-right"
disabled={this.state.text.length== 0 && !this.state.uploaded}>OK</button>
<button className="btn btn-default pull-right" onClick={this.handleUpload}>
{this.state.uploaded ? "√ upload_OK":"Add Pic"}</button>
</div>
</div>
);
}
});
ReactDOM.render(
<Fix />,
document.getElementById('dome')
);
</script>
</body>
</html>

效果相同,但是代码量和逻辑处理react完胜。。。。。。。。。。。

夺命雷公狗-----React---21--小案例之心情留言板的更多相关文章

  1. 夺命雷公狗—angularjs—21—解决angularjs压缩问题

    我们在实际的开发中往往离不开js的代码压缩,因为这样可以减轻服务器的压力,是的的方法如下所示: <!DOCTYPE html> <html lang="en" n ...

  2. 夺命雷公狗-----React---12--添加类和样式

    <!DOCTYPE> <html> <head> <meta charset="utf-8"> <title></ ...

  3. 夺命雷公狗-----React---11--添加css样式的方法

    <!DOCTYPE> <html> <head> <meta charset="utf-8"> <title></ ...

  4. 夺命雷公狗-----React---10--组建嵌套进行数据遍历

    先写一个组建... 然后进行嵌套.. <!DOCTYPE html> <html lang="en"> <head> <meta char ...

  5. 夺命雷公狗-----React---9--map数据的遍历

    比如我们要实现的是这种效果: 用这种方法来写,她只能写死在哪,没啥意思,所以我们定义一个数据,然后来测试下map方法对她遍历出来的数据 <!DOCTYPE html> <html l ...

  6. 夺命雷公狗-----React---8--react官方提供的组建实现双向绑定

    首先要引入她.. <!DOCTYPE html> <html lang="en"> <head> <meta charset=" ...

  7. 夺命雷公狗-----React---7--组建的状态props和state

    props:组建初始要渲染的数据,他是不可以改变的 state:组建状态发生改变,调用render重新渲染数据 我们来写一个例子: <!DOCTYPE html> <html lan ...

  8. 夺命雷公狗-----React---6--props多属性的传递

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  9. 夺命雷公狗-----React---5--props对象的传递

    提示:props的值是不可以改变的... <!DOCTYPE html> <html lang="en"> <head> <meta ch ...

随机推荐

  1. WordPress 的 Google 字体问题解决办法

    在国内访问的时候,WordPress 里面引用的 google 字体可能会导致加载速度变得很慢. 要修改的地方有(我使用的版本是 4.0): wp-includes 里面的 script-loader ...

  2. MySQL函数操作数据库

    1.select语句查询信息(实现模糊查询) <form name="form1" method="post" action=""&g ...

  3. JS中的函数声明错误

      这个问题是JS的函数声明形参部分不带var. ( 额,基础不扎实.)

  4. #20145205 《Java程序设计》第5周学习总结

    教材学习内容总结 1.java中的错误都会被包装为对象这是书上的一句原话,我的理解就是,在java这个大环境中,就像是流水线工厂一样,代码的编译就是进行流水线作业,代码输进来,开始的时候就是打包封装, ...

  5. jQuery 中的事件冒泡和阻止默认行为

    1.事件冒泡 <%@ page language="java" import="java.util.*" pageEncoding="utf-8 ...

  6. 简单查询(select)

      在数据库中,字符串进行运算时,会将字符串内容转化为数字进行运算 查询语法:select 列     from 表     where 条件     order by 排序     asc:升序   ...

  7. 野路子出身PowerShell 文件操作实用功能 MSSQL123

    因工作需要,处理一批文件,本想写C#来处理的,后来想想这个是PowerShell的天职, 索性就网上各种搜,各种Demo,各种修改,花了半天时间,最后还是拼凑出来能达到效果了. 本身对PowerShe ...

  8. JavaScript 入门教程四 语言基础【3】

    一.数据类型介绍: String 1.是使用 Unicode 字符组成的字符序列.所以可以容纳各种语言. 2.字符串可以使用双引号(“”)或者单引号('')表示,但必须成对出现. 3.转移序列使用 \ ...

  9. openstack-keystone

    preparation: config: /etc/keystone/keystone.conf log: /var/log/keystone.log 1. change log level: vi ...

  10. linux nginx 启动脚本

    linux nginx 启动脚本 [root@webtest76 ~]# vi /etc/init.d/nginx #!/bin/bash # nginx Startup script for the ...