我必须将 TextArea 的长度限制为 2 个字符。我找到了很多答案。阅读这些答案,我已经达到了以下代码。它具有“keydown”和“keyup”的事件处理程序。
- 你认为这是正确的和足够的吗?
- 它可以在所有主流浏览器中运行吗?
http://jsfiddle.net/Lijo/VAYze/1/
- 注意:我不需要显示错误消息。因此,正则表达式验证对我来说不是一个好的选择。
- 注意:我正在寻找基于现有代码的答案——而不是一个全新的答案
- 注意:关键代码来自http://www.asquare.net/javascript/tests/KeyCode.html和http://www.asquare.net/javascript/tests/KeyCode.html
更新
要将文本处理dragged
到文本区域,我没有看到 jQuery 解决方案。我打算regular expression validator
用EnableClientScript
=“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;
}
}