Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/423.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在移动浏览器上强制使用maxlength属性_Javascript_Jquery_Html_Input_Maxlength - Fatal编程技术网

Javascript 在移动浏览器上强制使用maxlength属性

Javascript 在移动浏览器上强制使用maxlength属性,javascript,jquery,html,input,maxlength,Javascript,Jquery,Html,Input,Maxlength,我有一个最大长度的文本输入: <input type="text" name="name" maxlength="50"> 这在我尝试过的所有桌面浏览器上都运行良好,但在移动浏览器上似乎没有强制执行最大长度 有没有办法让移动浏览器强制执行maxlength?我愿意在解决方案中使用JavaScript和/或jQuery。试试这个: var $input = $('input') $input.keyup(function(e) { var max = 5; if

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

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

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

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

试试这个:

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

jshiddle这里:

我建议做一些更简单的事情。以上这些对我来说都不起作用,除非有一个空间可以让这个领域去了解它。。。或者,如果我点击提交后,它仍然传递信息

if($(".input") > 20){$(".input") = input.slice(0,20)};

通用jQuery是一种强制执行表单字段的声明
maxlength
的方法。(我需要它用于会话存储、本地存储和参数重写。)代码针对可读性进行了优化

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

  if (max && val) {
    trimmed = val.substr(0, max);
    $(this).val(trimmed);
  }
});

这个问题是因为您的键盘上启用了预测文本,请禁用它,然后重试

我强烈怀疑还有其他原因。您是否使用任何库或框架来将您的标记转换为不同的移动浏览器,例如jQuery mobile?我支持@MattBall所说的。可能是脚本冲突或抛出错误。看到抛出的js错误了吗?对于不支持maxLength属性的浏览器(包括手机),您可以使用类似于使用
validate
参数的js错误。我只包含常规的jQuery库。我甚至在关于maxlength的网页上测试了它。它在我的手机上不起作用,至少在达到最大长度后,它似乎不会返回空格。是否可以在达到最大长度5次后禁用按键?@DineshKumar其他响应之一在达到最大长度后禁用按键。但是,不建议这样做,因为用户将无法按backspace。虽然此代码片段可能会解决问题,但确实有助于提高文章的质量。请记住,您将在将来回答读者的问题,这些人可能不知道您的代码建议的原因。还请尽量不要用解释性注释挤满你的代码,这会降低代码和解释的可读性!当然可以,但你不能假设每个用户都会禁用它。您必须能够解释所有实例。@mdurchholz当然,我只是想让朋友们知道为什么会发生这种情况,也许这将有助于更好地搜索最终答案,我今天也遇到了这个问题,但我没有找到一个好的答案
var max = 1

input.addEventListener('keyup', function (event) {
    event.target.value = event.target.value.substring(0, max)
})
$('input').on('change', function () {
  var max = $(this).attr('maxlength'),
      val = $(this).val(),
      trimmed;

  if (max && val) {
    trimmed = val.substr(0, max);
    $(this).val(trimmed);
  }
});