微博中很常见的一个功能,求问实现原理,用什么监测的啊?还有,怎么怎么计算的出弹框(一般是好友姓名)的位置的?

解决方案 »

  1.   

    给文本框加一个onchange事件,再在里面判断每次触发时里面文本有没有带@
      

  2.   

    用onKeyup事件试试,希望对你有所帮助。
    <!DOCTYPE>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title>无标题文档</title>
        <script type="text/javascript">
            function checkSpar(text){
                if(/@/.test(text.value)){
                    alert("不能包含@字符");
                    text.value = text.value.replace("@","");
                }
            }
        </script>
    </head>
    <body>
        <input type="text" onKeyup="checkSpar(this);">
    </body>
    </html>
      

  3.   

    onkey类事件(DOWN,UP,PRESS)都可以得到当前按下的键值,与@的键值比较.获得文本框中光标位置的通用代码:
    <script>
    function getTxt1CursorPosition(){
        var oTxt1 = document.getElementById("txt1");
        var cursurPosition=-1;
        if(oTxt1.selectionStart){//非IE浏览器
            cursurPosition= oTxt1.selectionStart;
        }else{//IE
            var range = document.selection.createRange();
            range.moveStart("character",-oTxt1.value.length);
            cursurPosition=range.text.length;
        }
        alert(cursurPosition);
    }
    </script>
    <input type="text" id="txt1" value="abcde" onclick="getTxt1CursorPosition()">