17

我有一个最大长度的文本输入:

<input type="text" name="name" maxlength="50">

这在我尝试过的所有桌面浏览器上都运行良好,但最大长度似乎并未在移动浏览器上强制执行。

有没有办法让移动浏览器强制执行maxlength?我愿意在解决方案中使用 JavaScript 和/或 jQuery。

4

6 回答 6

7

试试这个:

var $input = $('input')
$input.keyup(function(e) {
    var max = 5;
    if ($input.val().length > max) {
        $input.val($input.val().substr(0, max));
    }
});

jsFiddle在这里:http: //jsfiddle.net/fttk2/1/

于 2013-07-03T04:16:55.067 回答
2

此问题是因为您的键盘上启用了预测文本,请禁用它并重试

于 2020-09-28T10:24:57.293 回答
2
var max = 1

input.addEventListener('keyup', function (event) {
    event.target.value = event.target.value.substring(0, max)
})
于 2017-05-13T17:41:28.850 回答
0

我会建议一些更简单的东西。以上对我不起作用,除非为该字段添加了一个空间来获取它......或者如果我在之后点击提交,它仍然通过了信息。

if($(".input") > 20){$(".input") = input.slice(0,20)};
于 2016-12-04T12:55:49.813 回答
0

通用 jQuery 方法来强制执行maxlength表单字段的声明。(我需要它用于 sessionStorage、localStorage 和 param 覆盖。)针对可读性进行了优化的代码。

$('input').on('change', function () {
  var max = $(this).attr('maxlength'),
      val = $(this).val(),
      trimmed;

  if (max && val) {
    trimmed = val.substr(0, max);
    $(this).val(trimmed);
  }
});
于 2017-12-13T06:47:57.317 回答
-1
var maxLength = 10;
var field = $('#myinput');
field.keydown( function(e)
{
    if ( $(this).val().length >= maxLength ) e.preventDefault();
});
于 2013-07-03T04:29:34.443 回答