阅读:2393回复:1
大家看看怎么改才能支持FF,多谢了!
这是一段输入验证的代码:当输入英文单字节字符时可输入长度为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> |
|
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); } |
|