javascript实例学习之二——类新浪微博的输入框
该案例实现如下效果,具体可见新浪微博网站的微博发布框
实现 以下效果
效果1:当光标移入文本框时,文本框上方的文字发生变化,显示剩余可以输入的字数,当光标移出文本框,并且文本框中没有任何输入时,恢复最初默认的文字
效果2:文本输入的时候,文本框提示剩余文本数,剩余文本字数随着输入字数而减少,两个字母算一个字,一个汉字算一个字
效果3:当输入框为空,或者输入框内的文本超过140个字的时候,发布按钮不可用,否则可用;在发布按钮不可用的情况下点击发布按钮,文本框会出现红色背景,并闪动两次
对应的html代码:
<!DOCTYPE html>
<html lang="zh_CN">
<head>
<meta charset="UTF-8">
<title>微博发布框效果</title>
<style>
body{font-size: 12px}
div{width:400px;margin:20px auto;}
div p{float:right; }
div textarea{width:%;height:150px;}
div a{float:right;padding:10px 20px;font-size: 16px;background:#0f0;color:#fff;}
div a.disable{background: #ccc;color:#;}
</style>
</head>
<body>
<div id="div1">
<p>他们都在读什么?企业#大咖私藏书单#,领导者的思想盛宴 </p>
<textarea name="" id="" ></textarea>
<a href="#" class="disable">发布</a>
</div>
<script src="js/weiboInput.js"></script>
</body>
</html>
微博发布框html代码
对应的javascript代码:
//实现 以下效果
//效果1:当光标移入文本框时,文本框上方的文字发生变化,显示剩余可以输入的字数
//当光标移出文本框,并且文本框中没有任何输入时,恢复最初默认的文字 //效果2:文本输入的时候,文本框提示剩余文本数,剩余文本字数随着输入字数而减少,两个字母算一个字,一个汉字算一个字 //效果3:当输入框为空,或者输入框内的文本超过140个字的时候,发布按钮不可用,否则可用;在发布按钮不可用的情况下点击发布按钮,文本框会出现红色背景,并闪动两次 document.addEventListener('DOMContentLoaded', function() {
var oDiv = document.getElementById('div1');
var oP = oDiv.getElementsByTagName('p')[];
var oT = oDiv.getElementsByTagName('textarea')[];
var oA = oDiv.getElementsByTagName('a')[];
//实现效果1
oT.addEventListener('focus', function() {
oP.innerHTML = "还可以输入<span>140</span>个字";
}, false);
oT.addEventListener('blur', function() {
if (!this.value) {
oP.innerHTML = "他们都在读什么?企业#大咖私藏书单#,领导者的思想盛宴";
} }, false); //实现效果2,连续输入在标准下触发的是input事件,在ie中触发的是onproperty事件
oT.addEventListener('input', function() { var oS = oDiv.getElementsByTagName('span')[];
var curLength = Math.ceil(getLength(oT.value) / );
if (curLength <= ) {
oS.innerHTML = - curLength;
} else {
oS.innerHTML = curLength - ;
oS.style.color = 'red';
}
if (curLength <= || curLength > ) {
oA.className = 'disable';
} else {
oA.className = '';
} }, false); function getLength(str) {
return str.replace(/[^\x00-\xff]/g, 'aa').length;
} //实现效果3 oA.addEventListener('click', function() {
var timer;
var num = ;
if (oA.className === 'disable') {
//文本框的背景变成红色并且闪动两次
// clearInterval(timer);
// timer = setInterval(function() {
// num++;
// if (num == 4) {
// clearInterval(timer);
// num = 0;
// }
// if (num % 2) {
// oT.style.background = 'pink';
// } else {
// oT.style.background = '';
// } // }, 150); //尝试利用超时调用来模拟间歇调用
clearTimeout(timer); function changeBgColor() { num++;
if (num >= ) {
clearTimeout(timer);
num=;
return;
}
if (num % ) {
oT.style.background = 'pink';
} else {
oT.style.background = '';
}
timer = setTimeout(changeBgColor, );
}
timer = setTimeout(changeBgColor, );
} else {
alert('微博已发布!');
}
}, false); }, false);
微博发布框javascript代码
收获:
1.背景闪动!联系动画!
2.文本框连续输入事件,ie下是onpropertychange,标准下是input
javascript实例学习之二——类新浪微博的输入框的更多相关文章
- 如何对Javascript代码进行二次压缩(混淆)
如何对Javascript代码进行二次压缩(混淆) 对Javascript代码进行压缩(混淆),可以有效减少传输和加载时间.但是,不是所有的变量(方法)都能被混淆的,一般来说,只有非属性的变量(方法) ...
- JavaScript基础笔记二
一.函数返回值1.什么是函数返回值 函数的执行结果2. 可以没有return // 没有return或者return后面为空则会返回undefined3.一个函数应该只返回一种类型的值 二.可变 ...
- JavaScript基本概念(二)
JavaScript 基本概念(二) 操作符和语句 目录 操作符 一元操作符 位操作符 布尔操作符 乘性操作符 其他操作符 语句部分 说起操作符,回忆下上一篇文章末尾说的话. 操作符 一元操作符 ++ ...
- 前端笔记之JavaScript面向对象(二)内置构造函数&相关方法|属性|运算符&继承&面向对象
一.复习 1.1复习上下文 函数的调用方式 上下文 fun() window obj.fun() obj box.onclick = fun box setInterval(fun,1000) set ...
- JavaScript学习记录二
title: JavaScript学习记录二 toc: true date: 2018-09-13 10:14:53 --<JavaScript高级程序设计(第2版)>学习笔记 要多查阅M ...
- 深入JavaScript对象(Object)与类(class),详细了解类、原型
JavaScript基于原型的对象机制 JavaScript原型上的哪些事 一.JavaScript基于原型的对象机制 JavaScript对象是基于原型的面向对象机制.在一定程度上js基于原型的对象 ...
- JavaScript 入门教程二 在HTML中使用 JavaScript
一.使用 <script> 元素的方式有两种:直接在页面中嵌入 JavaScript 代码和引用外部 JavaScript 文件. 二.使用内嵌方式,一般写法为: <script t ...
- JavaScript实现点击按钮弹出输入框,点确定后添加li组件到ul组件里
JavaScript实现点击按钮弹出输入框,点确定后添加li组件到ul组件里 <!doctype html> <html manifest="lab4.manifest&q ...
- 一些有用的javascript实例分析(二)
原文:一些有用的javascript实例分析(二) 5 求出数组中所有数字的和 window.onload = function () { var oBtn = document.getElement ...
随机推荐
- Cent OS 6.6 下安装mysql(5.5.20)和 PHP(5.3.10)
0.准备步骤(没有连接网络的 linux): 挂载光盘.让网络 yum 源失效.修改光盘 yum 文件.安装 c 语言编译器 gcc. 1.MySQL(5.5.20) 下载 mysql 5.5.20 ...
- UITableview xib里面 cell 按钮的回调
// MoreBtnCell.m#import <UIKit/UIKit.h> @interface MoreBtnCell : UITableViewCell @property (w ...
- RT-Thread相同优先级线程的调度
/* 静态线程的 线程堆栈*/ ]; ]; /* 静态线程的 线程控制块 */ static struct rt_thread thread_test1; static struct rt_threa ...
- flex的Accordion组件头部文本居中显示
flex的Accordion组件头部文本默认是居左的,可以通过设置headerStyleName属性使之居中,另外还可以设置字体的样式等 <?xml version="1.0" ...
- Shell-bash中特殊字符汇总[转]
转自http://www.linuxidc.com/Linux/2015-08/121217.htm 首先举例一个bash脚本 #!/bin/bash file=$1 files=`find / -n ...
- 关于集合的练习P235-1,2,3
第一题: import java.util.*; public class ListTest { public static void main(String[] args) { ArrayList& ...
- 深入理解Javascript闭包 新手版
一.什么是闭包? “官方”的解释是:所谓“闭包”,指的是一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分. 相信很少有人能直接看懂这句话,因为他描述 ...
- (转)常用的js设计模式
模式是解决或者避免一些问题的方案. 在JavaScript中,会用到一些常用的编码模式.下面就列出了一些常用的JavaScript编码模式,有的模式是为了解决特定的问题,有的则是帮助我们避免一些Jav ...
- nrf51822裸机教程-GPIOTE
GPIO通常都会具有中断功能,上一讲的GPIO中并没有涉及到中断的相关寄存器. 51822将GPIO的中断相关做成了一个单独的模块GPIOTE,这个模块不仅提供了GPIO的中断功能,同时提供了 通过t ...
- IAdaptable和IAdaptableFactory(转)
先记在这里,回头研究下. 原文:http://blog.csdn.net/mini_snow/article/details/3877379 1. 简介和简单的实现 IAdapteable实际上在Ec ...