cmd/cntrl + a 不适用于 jquery 极限函数
cmd/cntrl + a doesnt work on jquery limit function
我有一个带计数的 jquery 输入框字符限制器,但是当我尝试 cmd/cntrl + a(highlight/select 全部)在输入框中不起作用时,它会闪烁一个第二然后消失。不知道为什么会这样。 See fiddle
这是我的 jquery
var maxchars = 10;
$('#post_text').keyup(function () {
var tlength = $(this).val().length;
$(this).val($(this).val().substring(0, maxchars));
var tlength = $(this).val().length;
remain = maxchars - parseInt(tlength);
$('#remain').text(remain);
});
和html
<span id="remain">10</span> characters remaining
<br />
<input type="text" class="form-control input-lg auto-size"
placeholder="What would you like to post?"
name="post_text" id="post_text">
在我的例子中它确实可以工作 (Firefox 40.0.3)。但是,它可能不适用于其他一些浏览器。很有可能和keyup函数有关。
将keyup(...)
替换为bind('input',...)
:
var maxchars = 10;
$('#post_text').bind('input',function () {
var tlength = $(this).val().length;
$(this).val($(this).val().substring(0, maxchars));
var tlength = $(this).val().length;
remain = maxchars - parseInt(tlength);
$('#remain').text(remain);
});
我会检查您按下的字符。 'Ctrl' 键的字符代码是 17,下面的代码使用一个标志来表示如果 'ctrl' 被按下则不检查输入长度。让我知道这是否适合你。
var maxchars = 10;
$('#post_text').keydown(function (e) {
var checkInput = true;
if (e.which == 17) {
checkInput = false;
}
if (checkInput){
var tlength = $(this).val().length;
$(this).val($(this).val().substring(0, maxchars));
var tlength = $(this).val().length;
remain = maxchars - parseInt(tlength);
$('#remain').text(remain);
}
});
------------编辑-------------
我倾向于做的实际上是向输入标签添加一个 maxlen 属性,如 maxlen="10" 这样您就不必检查输入长度,而只需更新输入标签 - “剩余 10 个字符”
我有一个带计数的 jquery 输入框字符限制器,但是当我尝试 cmd/cntrl + a(highlight/select 全部)在输入框中不起作用时,它会闪烁一个第二然后消失。不知道为什么会这样。 See fiddle
这是我的 jquery
var maxchars = 10;
$('#post_text').keyup(function () {
var tlength = $(this).val().length;
$(this).val($(this).val().substring(0, maxchars));
var tlength = $(this).val().length;
remain = maxchars - parseInt(tlength);
$('#remain').text(remain);
});
和html
<span id="remain">10</span> characters remaining
<br />
<input type="text" class="form-control input-lg auto-size"
placeholder="What would you like to post?"
name="post_text" id="post_text">
在我的例子中它确实可以工作 (Firefox 40.0.3)。但是,它可能不适用于其他一些浏览器。很有可能和keyup函数有关。
将keyup(...)
替换为bind('input',...)
:
var maxchars = 10;
$('#post_text').bind('input',function () {
var tlength = $(this).val().length;
$(this).val($(this).val().substring(0, maxchars));
var tlength = $(this).val().length;
remain = maxchars - parseInt(tlength);
$('#remain').text(remain);
});
我会检查您按下的字符。 'Ctrl' 键的字符代码是 17,下面的代码使用一个标志来表示如果 'ctrl' 被按下则不检查输入长度。让我知道这是否适合你。
var maxchars = 10;
$('#post_text').keydown(function (e) {
var checkInput = true;
if (e.which == 17) {
checkInput = false;
}
if (checkInput){
var tlength = $(this).val().length;
$(this).val($(this).val().substring(0, maxchars));
var tlength = $(this).val().length;
remain = maxchars - parseInt(tlength);
$('#remain').text(remain);
}
});
------------编辑-------------
我倾向于做的实际上是向输入标签添加一个 maxlen 属性,如 maxlen="10" 这样您就不必检查输入长度,而只需更新输入标签 - “剩余 10 个字符”