0

我必须将 TextArea 的长度限制为 2 个字符。我找到了很多答案。阅读这些答案,我已经达到了以下代码。它具有“keydown”和“keyup”的事件处理程序。

  1. 你认为这是正确的和足够的吗?
  2. 它可以在所有主流浏览器中运行吗?

http://jsfiddle.net/Lijo/VAYze/1/

  1. 注意:我不需要显示错误消息。因此,正则表达式验证对我来说不是一个好的选择。
  2. 注意:我正在寻找基于现有代码的答案——而不是一个全新的答案
  3. 注意:关键代码来自http://www.asquare.net/javascript/tests/KeyCode.htmlhttp://www.asquare.net/javascript/tests/KeyCode.html

更新

要将文本处理dragged到文本区域,我没有看到 jQuery 解决方案。我打算regular expression validatorEnableClientScript=“false”做一个。它将仅在服务器端进行验证。这是为了处理绕过现有 jQuery 操作的任何内容。 多行文本框的 ASP 正则表达式验证器

jQuery

$(document).ready(function () {


var maxLength = 2;

$('.multiline').keydown(function (e) {


    var existingText = $(this).val();
    var existingLength = existingText.length;

    if (existingLength >= maxLength) 
    {
        if (maxLength > 0) 
        {

            if (!checkSpecialKeys(e)) 
            {
                $(this).val(existingText.substring(0, maxLength));
                 $(this).css('color','red');

                //Newly entered character not rendered since false is returned
                e.preventDefault();
            }
        }
    }

  });


//To trim the text if a paste happens
$('.multiline').keyup(function (e) {

    var newText = $(this).val();
    var newLength = newText.length;

    if (newLength > maxLength) {
        if (maxLength > 0) {
            $(this).val(newText.substring(0, maxLength));
            $(this).css('color','red');
        }
    }

});


}
);


function checkSpecialKeys(e) 
{
if (e.keyCode >= 48 && e.keyCode <= 90) 
{
    return false;
}

if (e.keyCode >= 96 && e.keyCode <= 111) 
{
    return false;
}

else 
{
    return true;
}
}
4

1 回答 1

1

根据您的要求,我只能说您应该在 textarea 上使用 maxlength 属性。这可以节省您的 JavaScript 代码,处理特殊情况,例如将文本拖到输入中。由于它是浏览器功能,因此速度更快。所有支持 textarea 的浏览器都支持它。

例子:

<textarea maxlength="2"></textarea>

maxlength 是 textarea 的一个新属性。并非所有浏览器都支持它......(来源

对不起

于 2012-12-07T10:09:47.063 回答