Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 检查多行文本框的大小_Javascript_Asp.net_Textbox - Fatal编程技术网

Javascript 检查多行文本框的大小

Javascript 检查多行文本框的大小,javascript,asp.net,textbox,Javascript,Asp.net,Textbox,我花了好几个小时想弄明白。 为什么在多行文本框asp控件中,我有140个字符的限制,但有时我可以输入141或142个字符,尤其是使用enter键 这是我的密码 function CheckSize(o, size) { if (o != null) { var s = o.value.length; if (s > size) { debugger; alert('Lamentamos mas foi

我花了好几个小时想弄明白。 为什么在多行文本框asp控件中,我有140个字符的限制,但有时我可以输入141或142个字符,尤其是使用enter键

这是我的密码

function CheckSize(o, size) {
    if (o != null) {
        var s = o.value.length;
        if (s > size) {
            debugger;
            alert('Lamentamos mas foi atingido o limite máximo para o texto a introduzir.\nSugerimos que introduza um texto com menos de ' + size + ' caracteres.\nAgradecemos a sua compreensão.');
            // alert(resources.error_reachedMaxNumberOfChars.replace("{0}",String(size)));
            var trim = o.value.trim();
            o.value = trim.substring(0, size - 1);
        }
    }
}

请尝试以下代码:

function CheckSize(textBox, maxLength)
{
    if (textBox.value.length > maxLength)
    {
        alert("Max characters allowed are " + maxLength);
        textBox.value = textBox.value.substr(0, maxLength);
    }
}

我的猜测是,您正在遇到一些现代浏览器()中存在的相当常见的
maxLength
错误。这是一个如何解决该问题的示例,尽管不是针对每种情况(即粘贴)都进行了强化

CSS

HTML


上,如何将此函数与标记关联?您能否提供所遇到问题的详细信息?旁注:
substring()
不接受第二个参数指定位置的字符,因此您不需要
-1
。这应该是您正在寻找的:
o.value=trim.substring(0,size)另外,您使用的浏览器是什么?IE8及以下版本不支持字符串的
trim()
方法。这将破坏逻辑,因为它试图修剪textarea中的值。。。这将使你的生活变得更加轻松。在最近的浏览器中,这些问题仍然存在,但业务需求需要IE(对于不支持
AddEventListener
但使用
attachEvent
的旧IE,则需要以不同方式分配事件侦听器。与
classList
相同,您需要使用polyfil/shim添加和删除类。否则,其他所有内容都兼容。在此处搜索,您将找到需要添加的信息。)您需要。您可以使用
按键
或符合您要求的类似工具,而不是
输入
.hidden {
    visibility: hidden;
}
<textarea id="myTextbox" maxlength="140" rows="4" cols="35"></textarea>
<div id="count">0</div>
<div id="alert" class="hidden">At max chars!</div>
<div id="newline" class="hidden">Newline prevented as it is 2 characters!</div>
var myTextBox = document.getElementById('myTextbox'),
    count = document.getElementById('count'),
    alert = document.getElementById('alert'),
    newline = document.getElementById('newline'),
    maxLength = 140;

myTextBox.addEventListener('input', function (e) {
    var value = e.target.value.replace(/\r?\n/g, '\r\n'),
        length = value.length;


    if (length >= maxLength) {
        if (length > maxLength) {
            length = maxLength - 1;
            e.target.value = value.slice(0, length);
            newline.classList.remove('hidden');
        } else {
            alert.classList.remove('hidden');
            newline.classList.add('hidden');
        }
    } else {
        alert.classList.add('hidden');
        newline.classList.add('hidden');
    }

    count.textContent = length;
}, false);