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);
}
});