html中输入的maxlength属性在HTC One M7上不起作用

时间:2014-06-27 02:22:31

标签: android html input maxlength htc-android

我有一个简单的输入字段,其中包含maxlength =“2”属性。代码如下所示:

<input id="txtLoginName" maxlength="2">

它适用于大多数Android设备。但是,在HTC One M7上,它不起作用。在这个设备上,它只允许我输入任意数量的字符。

有什么建议吗?我认为到目前为止它应该是一个特定于设备的问题。

提前致谢。

4 个答案:

答案 0 :(得分:6)

试试这个:

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

答案 1 :(得分:2)

我在几个项目中注意到了这个问题。我认为Android的某些版本对maxlength的支持不好。

我的解决方案是使用jQuery keydown函数来检查字符数量,并防止在达到最大值时再输入字符。

$('#inputWithMaxLength').keydown(function (e) {

    var inputLength = jQuery(this).val().length;

    if(inputLength >= 10) {
        e.preventDefault();
        return false;
    }
}

我确信你可以改变它,以便搜索任何带有maxlength属性的输入,并动态创建一个jQuery备份。我不确定那会是不是很慢。

答案 2 :(得分:0)

关于此主题的发现:

  

该问题并非特定于Android,而是Android键盘。 maxlength在Google键盘上可用。maxlength在三星键盘上不可用。 =>参见https://github.com/ionic-team/ionic/issues/11578#issuecomment-323403990

更重要的是-这不是bug,而是功能:

答案 3 :(得分:0)

为防止这种情况,您应该使用(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,该内联onkeyup在此代码运行后也应调用(例如,更新char计数器)。