我必须将TextArea的长度限制为2个字符。我发现了很多答案。阅读这些答案我已经达到了以下代码。它有'keydown'和'keyup'事件处理程序。使用jQuery限制文本区域长度的代码有什么缺陷?
- 你认为这是正确的吗?
- 它可以在所有主流浏览器中使用吗?
http://jsfiddle.net/Lijo/VAYze/1/
- 注:我不需要一个错误信息显示。因此正则表达式验证对我来说不是一个好选择。
- 注:我基于现有代码寻找答案 - 不是一个全新的答案
- 注:键码从http://www.asquare.net/javascript/tests/KeyCode.html简称和http://www.asquare.net/javascript/tests/KeyCode.html
UPDATE
要处理文本dragged
成文本区域,我没有看到一个jQuery解决方案。我打算做regular expression validator
与EnableClientScript
=“false”。它将仅在服务器端进行验证。这是为了处理绕过现有jQuery操作的任何事情。 ASP Regular Expression Validator for Multi-line textbox
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;
}
}
值可以通过拖动字面上里面他们选中的文本来填充。不要忘记这种可能性。 – inhan
为什么不使用maxlenght属性? – Stefan
它最终需要失去焦点,所以你可能想附加一个** change **事件,这显然会触发:'$('。multiline')。change(function(){console.log('changed!') })' – inhan