我有一个简单的输入字段,它有一个 maxlength="2" 属性。代码如下所示:
<input id="txtLoginName" maxlength="2">
它适用于大多数 Android 设备。但是,在 HTC One M7 上,它不起作用。在这个设备上,它只允许我输入任意数量的字符。
有什么建议吗?到目前为止,我认为这应该是特定于设备的问题。
提前致谢。
我有一个简单的输入字段,它有一个 maxlength="2" 属性。代码如下所示:
<input id="txtLoginName" maxlength="2">
它适用于大多数 Android 设备。但是,在 HTC One M7 上,它不起作用。在这个设备上,它只允许我输入任意数量的字符。
有什么建议吗?到目前为止,我认为这应该是特定于设备的问题。
提前致谢。
试试这个:
var $input = $('input')
$input.keyup(function(e) {
var max = 5;
if ($input.val().length > max) {
$input.val($input.val().substr(0, max));
}
});
我对这个主题的发现:
该问题并非特定于 Android,而是针对 Android 键盘。maxlength 适用于谷歌键盘。maxlength 不适用于三星键盘。=> 见https://github.com/ionic-team/ionic/issues/11578#issuecomment-323403990
更重要的是——这不是一个错误,而是一个特性:
我在几个项目中注意到了这个问题。我认为某些版本的 Android 对 maxlength 的支持不好。
我的解决方案是使用 jQuery keydown 函数来检查字符的数量,并在达到最大值时阻止再输入。
$('#inputWithMaxLength').keydown(function (e) {
var inputLength = jQuery(this).val().length;
if(inputLength >= 10) {
e.preventDefault();
return false;
}
}
我相信您可以更改它,以便它搜索具有 maxlength 属性的任何输入并动态创建 jQuery 备份。我不确定这是否会很慢。
为了防止这种情况,你应该使用(Js-Jquery 混合)
$("body").unbind("keyup").on("keyup","input[maxlength],textarea[maxlength]", function(event) {
this.value= this.value.substr(0, this.getAttribute("maxlength"));
this.onkeyup && this.onkeyup();
});
onkeyup 是因为,您可能有内联 onkeyup,在此代码运行后也应该调用它(例如更新字符计数器)。