justink
小狐狸
小狐狸
  • UID7041
  • 注册日期2005-06-29
  • 最后登录2005-07-01
  • 发帖数1
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
阅读:2204回复:1

大家看看怎么改才能支持FF,多谢了!

楼主#
更多 发布于:2005-06-30 00:45
这是一段输入验证的代码:当输入英文单字节字符时可输入长度为text控件的maxlength,当输入双字节字符时只能输入maxlength/2个字符。

目前的代码在IE下正常,但在FF下就不行了,大家帮帮忙给改改

<html>
    <head>
    <script language="javascript">
    function genValidator()
    {
        var textArray = document.getElementsByTagName("input");
        for(var i=0; i<textArray.length; i++)
        {
            if(textArray.type == 'text')
            {
                if ( typeof window.addEventListener != "undefined" )
                {
                textArray.addEventListener( "input", checkLen, false );
            }
                else if ( typeof window.attachEvent != "undefined" )
                {
                 textArray.attachEvent( "onpropertychange", checkLen );
                }
                else
                {
                    textArray.oninput = function(){checkLen();}
                }
            }
        }

        var textareaArray = document.getElementsByTagName("textarea");
        for(var i=0; i<textareaArray.length; i++)
        {
            textareaArray.onpropertychange = function(){checkLen();}
        }


    }

    function checkLen()
    {
        var maxLen = 10;
        var e = event.srcElement;
        if(typeof(e.maxLength) != 'undefined')
        {
            maxLen = e.maxLength;
        }
        alert(maxLen);
        if(parseInt(length(e.value)) > parseInt(maxLen))
        {
            e.value = cutStr(e.value, maxLen);
        }
    }

    function length(sData)
    {
        var returnLen = 0;
        for(var i=0; i<sData.length; i++)
        {
            sData.charCodeAt(i)>256 ? returnLen+=2 : returnLen++;
        }
        return returnLen;
    }

    function cutStr(str, nLen)
    {
        var returnStr = "";

        for(var j=0; j<str.length; j++)
        {
            var tempStr = returnStr + str.charAt(j);
            if(parseInt(length(tempStr)) <= parseInt(nLen))
            {
                returnStr = tempStr;
            }
            else
            {
                break;
            }
        }

        return returnStr;
    }
    </script>
    </head>
    <body onload="genValidator()">
    <input type="text" maxlength="10" name="userName">
    <textarea name="note"></textarea>
    </body>
</html>
ydgi
火狐狸
火狐狸
  • UID2074
  • 注册日期2005-01-12
  • 最后登录2007-04-03
  • 发帖数166
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
1楼#
发布于:2005-06-30 00:45
参考这里http://www.mozilla.org/docs/dom/domref/dom_event_ref.html

例如:

function checkit(e)
{
  alert(e.target);
  alert(e.target.value);
}
游客

返回顶部