更正一下 赫赫 <input type="text" name="username" onblur="javascript:showError(this);" onfocus="javascript:showTip();" ID="Text1"  class="Warning">
function showError(obj){if (obj.value.search(/^[_\.a-z0-9]+@[a-z0-9]+[\.][a-z0-9]{2,}$/i)==-1)
    {
obj.className="Error";
    }
    else
    {
obj.className="Ok";
    }
}现在的问题是当光标在textbox停留时showTip()函数正常 但是不写任何东西离开textbox的时候result就显示× 我是想如果用户不写东西 只是停留一下的话我想textbox的class="Warning" 如果写东西以后删掉了 那就className="Error" 这个怎么改?谢谢

解决方案 »

  1.   

    今天怎么回事 晕死了 再次更正 赫赫 <input type="text" name="username" onblur="javascript:showError(this);" onfocus="javascript:showTip();" ID="Text1"  class="Warning">
    function showError(obj){if (obj.value.search(/^[_\.a-z0-9]+@[a-z0-9]+[\.][a-z0-9]{2,}$/i)==-1)
        {
    obj.className="Error";
        }
        else
        {
    obj.className="Ok";
        }
    }现在的问题是当光标在textbox停留时showTip()函数正常 但是不写任何东西离开textbox的时候className="Error" 我是想如果用户不写东西 只是停留一下的话我想textbox的class="Warning" 如果写东西以后删掉了 那就className="Error" 这个怎么改?谢谢
      

  2.   

    <html>
    <head>
    <script language="javascript">
    <!--
    var i = 0;
    function showTip(obj){
    if(obj.value=="")i=0;
    }
    function myPress(obj){
    if(obj.value.length>0)i = i + 1;
    }
    function showError(obj){
    if(i>0){
    if (obj.value.search(/^[_\.a-z0-9]+@[a-z0-9]+[\.][a-z0-9]{2,}$/i)==-1)
        {
    obj.className="Error";
    alert("Error");
        }
        else
        {
    obj.className="Ok";
    alert("Ok");
        }
    }else
    {
    obj.className="Warning"
    alert("Warning");
    }
    }
    //-->
    </script>
    </head>
    <body>
    <form>
    <input type="text" name="username" onblur="javascript:showError(this);" onfocus="javascript:showTip(this);" onKeyPress="myPress(this)" ID="Text1"  class="Warning">
    </form>
    </body>
    </html>思路:i为全局计数器变量,在获得焦点时判断obj.value是否为空,若为空,则i清0,在onKeyPress事件中统计是否曾经输入,在onblur事件中首先判断是否有过输入,然后再判断输入是否合法。
      

  3.   

    如果是曾经输入以后不管是否再次获得焦点,都是提示error,那么就不需要在onfoucs事件中清0,另外刚测试发现用onPress事件统计在只输入1个字符时统计发生错误,故改用onKeyUp事件统计输入,代码修改如下:
    <html>
    <head>
    <script language="javascript">
    <!--
    var i = 0;
    function showTip(){

    }
    function myPress(obj){
    if(obj.value.length>0)i++;
    }
    function showError(obj){
    if(i>0){
    if (obj.value.search(/^[_\.a-z0-9]+@[a-z0-9]+[\.][a-z0-9]{2,}$/i)==-1)
        {
    obj.className="Error";
    alert("Error");
        }
        else
        {
    obj.className="Ok";
    alert("Ok");
        }
    }else
    {
    obj.className="Warning"
    alert("Warning");
    }
    }
    //-->
    </script>
    </head>
    <body>
    <form>
    <input type="text" name="username" onblur="javascript:showError(this);" onfocus="javascript:showTip();" onKeyUp="myPress(this)" ID="Text1"  class="Warning">
    </form>
    </body>
    </html>
      

  4.   

    程序有一个小bug 当输入一个字符的时候失去焦点后弹出的是Warning而应该弹出来的Error却没弹出来 这是怎么回事啊?谢谢
    会不会是正则表达式的问题