`

限制textarea 文本框的长度maxlength(针对IE8不支持该属性之解决办法)

阅读更多
实现计齐截:用maxlength属性
<textarea maxlength="10"></textarea>
这个别式格式很简单的哦,然则 在我这边测试的时辰,并不克不及完全兼容主流浏览器
兼容性结果如下:
IE8 Firefox 17 Chrome 23
不兼容 兼容 兼容
实现规划二:用javascript实现
<textarea name="txt1" cols="45" rows="2" onKeyDown=""if (this.value.length>=20){event.returnValue=false}""></textarea>
这里就用到了一个onKeyDown。然则结果也不太幻想。
兼容性结果如下:
IE8 Firefox 17 Chrome 23
兼容 不兼容 兼容
实现规划三:综合上方的办法
因为上方无法兼容IE 和firefox,没办法,只能贱一点了!~所以,我就把上方的办法给综合起来~~
代码如下:
<textarea name="txt1" cols="45" maxlength="20" rows="2"
onKeyDown=""if (this.value.length>=20){event.returnValue=false}"">b</textarea>
重视哦,我只是把maxlength加上了!
兼容性结果如下:
IE8 Firefox 17 Chrome 23
兼容 兼容 兼容
原因很简单,maxlength是对firefox和chrome兼容,而那js代码是对IE 兼容。所以就ok啦!!我把
嘻嘻。。那天因为要提交这个ticket 所以急着交咯,反正客户那边经由过程啦。。哇哇哇。。
实现规划四:JavaScript的substring
<textarea name="blogdesc" cols="50" rows="5" onkeyup="limitLength(this,20)">x </textarea> 
兼容性结果如下:
IE8 Firefox 17 Chrome 23
兼容 兼容 兼容

然则,其实这个固然上方三个都兼容,然则有一个很不友爱的题目是,当你达到字符限制的时辰,它还会打出来,直到你松开按键的时辰就好了。不过,这个时辰 会有闪一下把后面多余的字符给删除了!~。不太友爱哦!~亲。
实现规划五:JavaScript
<textarea maxlength="10" onpropertychange="onmyinput(this)" oninput="return onmyinput(this)"
        onpaste="return onmypaste(this);" onkeypress="return onmykeypress(this);"></textarea>
js代码是:
function onmyinput(o) {
            if (o.value.length >= o.getAttribute("maxlength")) {
                if (o.value.length > o.getAttribute("maxlength"))
                    o.value = o.value.substring(0, o.getAttribute("maxlength"));
                return false;
            }
            return true;
        }
        function mygetclipdata() {
            if (!document.all) {
                netscape.security.PrivilegeManager.enablePrivilege(""UniversalXPConnect"");
                var clip = Components.classes[""@mozilla.org/widget/clipboard;1""].createInstance(Components.interfaces.nsIClipboard);
                var trans = Components.classes[""@mozilla.org/widget/transferable;1""].createInstance(Components.interfaces.nsITransferable);
                trans.addDataFlavor(""text/unicode"");
                var str = Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString);
                clip.getData(trans, clip.kGlobalClipboard);
                var str = new Object();
                var strLength = new Object();
                trans.getTransferData("text/unicode", str, strLength);
                if (str)
                    str = str.value.QueryInterface(Components.interfaces.nsISupportsString);
                var pastetext;
                if (str)
                    pastetext = str.data.substring(0, strLength.value / 2);
                return pastetext;
            }
            else {
                return window.clipboardData.getData("Text");
            }
        }
        function mysetclipdata(o) {
            if (!document.all) {
                netscape.security.PrivilegeManager.enablePrivilege(""UniversalXPConnect"");
                var clip = Components.classes[""@mozilla.org/widget/clipboard;1""].createInstance(Components.interfaces.nsIClipboard);
                var trans = Components.classes[""@mozilla.org/widget/transferable;1""].createInstance(Components.interfaces.nsITransferable);
                trans.addDataFlavor("text/unicode");
                var str = Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString);
                str.data = o;
                trans.setTransferData("text/unicode", str, o.length * 2);
                var clipid = Components.interfaces.nsIClipboard;
                clip.setData(trans, null, clipid.kGlobalClipboard);
            }
            else {
                window.clipboardData.setData("Text", o);
            }
        }
        function onmypaste(o) {
            var nMaxLen = o.getAttribute ? parseInt(o.getAttribute("maxlength")) : "";
            if (!document.all) {
                alert("不成能履行的代码");
            }
            else {

                if (document.ion.createRange().text.length > 0) {
                    var ovalueandclipboarddata = o.value + window.clipboardData.getData("Text");
                    if (o.getAttribute && ovalueandclipboarddata.length - document.ion.createRange().text.length > nMaxLen) {
                        if (window.clipboardData.getData("Text").substring(0, document.ion.createRange().text.length + nMaxLen - o.value.length) != "")
                            window.clipboardData.setData("Text", window.clipboardData.getData("Text").substring(0, document.ion.createRange().text.length + nMaxLen - o.value.length));
                        else
                            return false;
                    }
                }
                else {
                    var ovalueandclipboarddata = o.value + window.clipboardData.getData("Text");
                    if (o.getAttribute && ovalueandclipboarddata.length > nMaxLen) {
                        if (ovalueandclipboarddata.substring(0, nMaxLen - o.value.length) != "")
                            window.clipboardData.setData("Text", ovalueandclipboarddata.substring(0, nMaxLen - o.value.length));
                        else
                            return false;
                    }
                }
                return true;
            }
        }
        function onmykeypress(o) {
            if (!document.all) {
                var nMaxLen = o.getAttribute ? parseInt(o.getAttribute("maxlength")) : "";

                if (onmykeypress.caller.arguments[0].ctrlKey == true) {
                    if (onmykeypress.caller.arguments[0].which == 118) {

                        if (o.ionStart < o.ionEnd) {
                            var ovalueandclipboarddata = o.value + mygetclipdata();
                            if (o.getAttribute && (ovalueandclipboarddata.length - o.ionEnd + o.ionStart > nMaxLen)) {
                                if (mygetclipdata().substring(0, o.ionEnd - o.ionStart + nMaxLen - o.value.length) != "")
                                    mysetclipdata(mygetclipdata().substring(0, o.ionEnd - o.ionStart + nMaxLen - o.value.length));
                                else
                                    return false;
                            }
                        }
                        else {
                            var ovalueandclipboarddata = o.value + mygetclipdata();
                            if (o.getAttribute && ovalueandclipboarddata.length > nMaxLen) {
                                if (ovalueandclipboarddata.substring(0, nMaxLen - o.value.length) != "")
                                    mysetclipdata(ovalueandclipboarddata.substring(0, nMaxLen - o.value.length));
                                else
                                    return false;
                            }
                        }
                        return true;

                    }
                }


                if (onmykeypress.caller.arguments[0].which == 0 || onmykeypress.caller.arguments[0].which == 8)
                    return true;
                if (o.value.length >= o.getAttribute("maxlength")) {
                    if (o.ionStart < o.ionEnd)
                        return true;
                    if (o.value.length > o.getAttribute("maxlength"))
                        o.value = o.value.substring(0, o.getAttribute("maxlength"));
                    return false;
                }
                else
                    return true;

            }
            else {
                if (document.ion.createRange().text.length > 0)
                    return true;
                if (o.value.length >= o.getAttribute("maxlength"))
                    return false;
                else
                    return true;
            }
        }
IE8 Firefox 17 Chrome 23
兼容 兼容 兼容


文章来源:http://www.binvor.com/a/xinxizhongxin/wangluokaifajishu/2012/1216/13427.html
分享到:
评论

相关推荐

    jQuery textarea文本框输入文字字数限制提示代码

    本示例中,我们将探讨如何使用jQuery实现textarea文本框的字数限制功能,并实时提示用户输入的字符数量。 首先,让我们了解jQuery的基本概念。jQuery通过一个"$"符号作为入口,提供了一种简洁的方式来选择DOM元素、...

    控制textarea文本长度,并限制输入字数(带统计显示)

    在上述代码中,我们为`textarea`添加了一个`maxlength`属性,设置最大输入字数为100。然后,通过JavaScript获取`textarea`和显示字数统计的`span`元素,添加事件监听器`'input'`。当`textarea`内容改变时,更新字数...

    TextArea不支持maxlength的解决办法(jquery)

    为了解决这个问题,一些浏览器(如Firefox)自行实现了对textarea元素的maxlength属性的支持,但是出于标准兼容性考虑,并不是所有浏览器都支持这一非标准特性,比如IE浏览器。 为了解决跨浏览器的兼容性问题,可以...

    jQuery textarea文本框输入文字字数限制提示代码.zip

    js代码 [removed] //显示限制输入字符method function textAreaChange(obj){ ... var count_total = $this...jQuery textarea文本框输入文字字数限制提示代码,设置固定输入字符,实时计算显示已经输入多少字符。

    Vue下textarea文本框根据内容自适应改变高度

    首先,创建一个Vue组件`AutoHeightTextarea.vue`,该组件的核心在于监听textarea的`input`事件,每次文本内容变化时,计算textarea的高度以适应新的内容。Vue提供了便捷的数据绑定和响应式系统,我们可以利用这些...

    IE6-9placeholder、textarea-maxlength的修复;实时用户输入捕捉

    IE6-9 input和textarea元素的placeholder(占位符)属性与textarea元素的maxlength(最大长度限制)属性的修复与所有浏览器的实时输入捕捉,仅需要提供一个元素或者元素id与实时捕捉回调函数(可选)。甚至实现了各...

    jquery新浪发布微博textarea文本框限制文字字数表单

    本教程将详细讲解如何利用jQuery实现一个类似新浪发布微博的功能,特别是针对textarea文本框进行文字字数限制。 一、jQuery简介 jQuery是由John Resig在2006年创建的,它的核心理念是"Write Less, Do More",通过...

    textarea不能通过maxlength属性来限制字数的解决方法

    然而,HTML标准中并没有提供`maxlength`属性来限制`&lt;textarea&gt;`的字符数,因此必须采用其他方法来实现这一需求。 一种常见的限制字符数的方法是使用JavaScript(或其他脚本语言)。基本思路是通过监听`&lt;textarea&gt;`...

    textarea长度控制

    虽然`maxlength`属性对于`textarea`是有效的,但在某些浏览器中可能会出现警告提示“undefined attribute name (maxlength)”,这是因为`maxlength`属性实际上是为`input`元素设计的,并不是`textarea`的标准属性。...

    textarea限制长度插件

    通过这种方式,我们可以轻松地在网站上实现对textarea输入的字符长度限制,提高用户体验并确保数据的一致性。 总的来说,"textarea限制长度插件"是jQuery生态系统中一个实用的工具,它使得限制textarea字符数变得...

    JavaScript实现textarea的maxlength

    标题"JavaScript实现textarea的maxlength"指出,我们将探讨如何使用JavaScript来动态地实现和管理`textarea`的`maxlength`属性。这可能是为了在用户输入时实时检查字符数,或者在用户超过限制时给出反馈。 首先,...

    textarea_文本框多行下划线输入框.html

    html页面实现给textarea等等的文本框内添加可动态输入文字的多行下划线,类似于打印出来的学生考试试卷答题的那种多行横线效果一样,可在页面文本框内横线输入框上随意输入文字,调用浏览器打印文本时也可完整正常的...

    Textarea限制输入文本长度

    &lt;title&gt;Textarea长度限制示例 &lt;textarea id="message" onkeydown="limitLength('message')" rows="4" cols="50"&gt;&lt;/textarea&gt; 剩余字符数: 160 function limitLength(obj_id) { var value = document....

    html 文本框限制 大全

    可以使用`size`属性调整文本框在屏幕上的宽度,`rows`和`cols`属性用于多行文本框`&lt;textarea&gt;`的尺寸设置。 10. **禁用输入**: `disabled`属性可使文本框变为只读,用户无法修改其中的文本。 11. **HTML5的新...

    jQuery 文本框字符限制插件 Textarea

    本文将重点介绍标题为“jQuery 文本框字符限制插件 Textarea”的相关知识点,该插件主要用于限制用户在textarea文本框中输入的字符数。 在网页设计中,有时我们需要对用户的输入进行控制,例如限制评论长度、留言...

    jQuery实现限制textarea文本框输入字符数量的方法

    在Web开发中,限制用户在文本区域(textarea)中输入的字符数量是一种常见的需求,尤其是在需要限制输入长度的场景,如微博、评论等。使用jQuery库可以非常简便地实现这样的功能。下面将详细介绍使用jQuery实现限制...

Global site tag (gtag.js) - Google Analytics