Javascript 长度未返回正确的值
我有以下代码:Javascript 长度未返回正确的值,javascript,jquery,Javascript,Jquery,我有以下代码: $(document).ready(function (e) { $('#input').keydown(function (e) { var inpData_lenght = $(this).val().length+1; var max_length = 15; if (inpData_lenght >= max_length) { if (inpData_
$(document).ready(function (e) {
$('#input').keydown(function (e)
{
var inpData_lenght = $(this).val().length+1;
var max_length = 15;
if (inpData_lenght >= max_length)
{
if (inpData_lenght > max_length)
{
if ((e.keyCode != 8) && (e.keyCode != 46))
{
e.stopImmediatePropagation();
e.preventDefault();
}
}
$(this).css({'background-color': '#ff8080'});
}
else
{
$(this).css('background-color', '');
}
});
});
HTML:
当存在max_length-1
字符时,文本区域不会将背景变回白色,但仅在max_length-3
上,是否有解决方法?我知道这与退格或删除字符有关
编辑:我只能使用keydown,因为这是插件支持的唯一与键相关的回调。最好使用
keyup()
而不是keydown()
,因为您将获得结果输入值。如果长度超过最大值,只需将输入值替换为上一个值
您可以使用如下内容,而不是使用javascript条件
<textarea maxlength="15" id="input"/>
使用keyup将解决您的问题。你应该想出一种方法来防止人们按下钥匙。(如果您按住钥匙2秒钟,将超过您的15个字符限制)
将maxlength和keyup结合起来应该是最简单的方法
<textarea id="input" maxlength=3></textarea>
请参阅小提琴:如果您需要解决
键控
的问题,以下操作应该有效:
var maxLength = 15;
var currLength = this.value.length;
if (e.keyCode == 8 || e.keyCode == 46) {
var expectedLength = currLength - 1; // distinguish here!
} else {
var expectedLength = currLength + 1;
if (expectedLength > maxLength) {
e.stopImmediatePropagation();
e.preventDefault();
}
}
if (expectedLength >= maxLength) {
$(this).css('background-color', '#ff8080');
} else {
$(this).css('background-color', '');
}
然后使用我推荐的另一个插件。您使用的是什么?请注意,backspace和delete并不是您需要特别处理的唯一键:tab(带或不带shift)如何?箭头键呢?“…插件…”-什么插件?我在问题中没有看到任何插件代码。请注意,这不适用于较旧的浏览器(只支持
input
元素上的maxlength
)。
<textarea id="input" maxlength=3></textarea>
$(document).ready(function (e) {
$('#input').keyup(function (e)
{
var inpData_lenght = $(this).val().length;
var max_length = 3;
if (inpData_lenght >= max_length)
{
$(this).css({'background-color': '#ff8080'});
}
else
{
$(this).css('background-color', '');
}
});
});
var maxLength = 15;
var currLength = this.value.length;
if (e.keyCode == 8 || e.keyCode == 46) {
var expectedLength = currLength - 1; // distinguish here!
} else {
var expectedLength = currLength + 1;
if (expectedLength > maxLength) {
e.stopImmediatePropagation();
e.preventDefault();
}
}
if (expectedLength >= maxLength) {
$(this).css('background-color', '#ff8080');
} else {
$(this).css('background-color', '');
}