<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<style>
body{ font-size:12px;}
#div1{ width:400px; margin:20px auto;}
#div1 p{ float:right; margin:0;}
#div1 textarea{ width:400px; height:100px;}
#div1 a{ width:50px; height:30px; font-size:16px; line-height:30px; text-align:center; float:right; background:#00FF00; color:#FFFFFF;}
#div1 a.dis{ background:#CCCCCC; color:#666666;}
</style>

<script>

//onchange : 当光标消失的时候,只能触发一次

//ie : onpropertychange : 输入连续触发
//标准:oninput : 也是连续触发

window.onload = function(){
    var oDiv = document.getElementById('div1');
    var oP = oDiv.getElementsByTagName('p')[0];
    var oT = oDiv.getElementsByTagName('textarea')[0];
    var oA = oDiv.getElementsByTagName('a')[0];

    var ie = !-[1,];
    var bBtn = true;
    var timer = null;
    var iNum = 0;

    oT.onfocus = function(){

        if(bBtn){
            oP.innerHTML = '打击虚假消息,建设文明微博,还可以输入<span>140</span>字';
            bBtn = false;
        }

    };

    oT.onblur = function(){

        if(oT.value==''){
            oP.innerHTML = '《新浪微博社区公约(征求意见稿)》意见征求';
            bBtn = true;
        }

    };

    if(ie){
        oT.onpropertychange = toChange;
    }
    else{
        oT.oninput = toChange;
    }

    function toChange(){

        var num = Math.ceil(getLength(oT.value)/2);
        var oSpan = oDiv.getElementsByTagName('span')[0];

        if(!oSpan){return}

        if(num<=140){
            oSpan.innerHTML = 140 - num;
            oSpan.style.color = '';
        }
        else{
            oSpan.innerHTML = num - 140;
            oSpan.style.color = 'red';
        }

        if(oT.value=='' || num>140){
            oA.className = 'dis';
        }
        else{
            oA.className = '';
        }

    }

    function getLength(str){
        return String(str).replace(/[^\x00-\xff]/g,'aa').length;
    }

    oA.onclick = function(){

        if(this.className == 'dis'){

            clearInterval(timer);
            timer = setInterval(function(){

                if(iNum==5){
                    clearInterval(timer);
                    iNum = 0;
                }
                else{
                    iNum++;
                }

                if(iNum%2){
                    oT.style.background = 'red';
                }
                else{
                    oT.style.background = '';
                }

            },100);

        }
        else{
            alert('发布成功!');
        }

    };

};

</script>
</head>

<body>
<div id="div1">
    <p>《新浪微博社区公约(征求意见稿)》意见征求</p>
    <textarea></textarea>
    <a class="dis" href="javascript:;">发布</a>
</div>
</body>
</html>

js微博发布框的更多相关文章

  1. js微博发布框的实现

    观察了微博发布框, 1.发现他的剩余文字是动态改变的, 2.且文字为零时 发布框颜色为暗色 3.文字不符合标准时提交不通过 整理了一下思路 js会主要用到的方法 1.onclick() //点击发布时 ...

  2. 原生JS+tween.js模仿微博发布效果

    转载请注明出处:http://www.cnblogs.com/zhangmingze/p/4816865.html 1.先看效果吧,有效果才有动力: 2.html结构: <!DOCTYPE ht ...

  3. [js高手之路]设计模式系列课程-委托模式实战微博发布功能

    在实际开发中,经常需要为Dom元素绑定事件,如果页面上有4个li元素,点击对应的li,弹出对应的li内容,怎么做呢?是不是很简单? 大多数人的做法都是:获取元素,绑定事件 <ul> < ...

  4. 原生JavaScript 全特效微博发布面板效果实现

    javaScript实现微博发布面板效果.---转载白超华 采用的js知识有: 正则表达式区分中英文字节.随机数生成等函数 淡入淡出.缓冲运动.闪动等动画函数 onfocus.onblur.oninp ...

  5. 微博发布效果jq版

    大家都看过新浪微博的发状态功能,我模拟了一下类似的效果,包括发布时间,删除效果等.代码如下: <!DOCTYPE HTML> <html> <head> <m ...

  6. VUE实现微博发布效果

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

  7. js控制文本框只能输入中文、英文、数字与指定特殊符号.

    先在'' 里输入 onkeyup="value=value.replace(/[^\X]/g,'')" 然后在(/[\X]/g,'')里的 X换成你想输入的代码就可以了, 中文u4 ...

  8. bootstrap中popover.js(弹出框)使用总结+案例

    bootstrap中popover.js(弹出框)使用总结+案例 *转载请注明出处: 作者:willingtolove: http://www.cnblogs.com/willingtolove/p/ ...

  9. js 复选框 全选都选 如果某一个子复选框没选中 则全选按钮不选中

    <!DOCTYPE HTML> <html> <head> <meta charset=UTF-8> <title>js 复选框 全选都选 ...

随机推荐

  1. JQ限制输入字数,并提示剩余字数

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  2. C#是怎么获取窗口标题的

    博客搬到了fresky.github.io - Dawei XU,请各位看官挪步.最新的一篇是:C#是怎么获取窗口标题的.

  3. android_ViewPager_实现导航页

    android_ViewPager_实现导航页 既然是实现导航页的效果,那么我们肯定是要实现ViewPager的 要实现的效果如下 1.用户进入欢迎页面 2.判断是否是第一次进入,如果是,则进入导航页 ...

  4. UVA 185(暴力DFS)

      Roman Numerals  The original system of writing numbers used by the early Romans was simple but cum ...

  5. ubuntu卸载qq2012

    xianbin@xianbin-ThinkPad-E520:~$ sudo dpkg --purge wine-qq2012-longeneteam [sudo] password for xianb ...

  6. kcachegrind gui for callgrind

    DocumentationScreenshotsDownload/SourcesLinksRoadmapBugs & Wishes This is the homepage of the pr ...

  7. (转载)重温SQL——行转列,列转行

    原文地址:http://www.cnblogs.com/kerrycode/archive/2010/07/28/1786547.html 行转列,列转行是我们在开发过程中经常碰到的问题.行转列一般通 ...

  8. SQL Server数据的导入导出

    SQL Server 2008的导入导出服务可以实现不同类型的数据库系统的数据转换.为了让用户可以更直观的使用导入导出服务,微软提供了导入导出向导.导入和导出向导提供了一种从源向目标复制数据的最简便的 ...

  9. initMethod 和 afterPropertiesSet 以及 AwareMethod方法的执行时机

    在spring开发中,我们定义bean 经常会需要用到beanFactory对象,这就需要实现BeanFactoryAware这种类型的接口,它有一个setBeanFactory方法   在xml中配 ...

  10. android实现倒计时

    前言  在打开爱奇艺等app的欢迎界面的时候,右上角有一个倒计时的控件.倒计时完了以后进入主界面.现在我们来实现这个功能. 方法一 利用java的类Timer,TimerTask还有android的H ...