【问题标题】:maxlength attribute of input in html does not work on HTC One M7html 中输入的 maxlength 属性在 HTC One M7 上不起作用
【发布时间】:2014-08-18 01:02:24
【问题描述】:

我有一个简单的输入字段,它有一个 maxlength="2" 属性。代码如下所示:

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

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

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

提前致谢。

【问题讨论】:

    标签: android html input maxlength htc-android


    【解决方案1】:

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

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

    $('#inputWithMaxLength').keydown(function (e) {
    
        var inputLength = jQuery(this).val().length;
    
        if(inputLength >= 10) {
            e.preventDefault();
            return false;
        }
    }
    

    我相信您可以更改此设置,以便它搜索具有 maxlength 属性的任何输入并动态创建 jQuery 备份。不过我不确定这是否会相当慢。

    【讨论】:

    • 是的,我知道 jQuery 可以帮助解决这个问题。但是,我遇到了另一个问题:例如,我输入一个字符,让说“f”,预测会建议一些单词,如朋友、火、电影等。如果我选​​择一个建议的单词,文本字段将允许超过2 个字符,从现在开始,我仍然可以输入一些字符。
    • 您可以提供输入或形成属性 autocomplete="off",因为它是移动浏览器并且可能运行 html5
    • 我已经尝试过了,但是自动完成或自动大写等功能都不适用于 Android 的预测。
    • 你都试过了吗? autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
    • 是的,我已经这样做了。可悲的是,它们都不起作用。我认为按下预测词时无法捕捉到事件。似乎这是一个无法解决的问题。
    【解决方案2】:

    试试这个:

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

    【讨论】:

    • 如此简单实用!在 Android 中,所有其他在 value > maxlength 上“return false”的建议都不起作用,这非常有效!谢谢!
    • 这里也一样。另一个答案在 Android Cordova 上不起作用(尽管它在桌面 chrome 浏览器中使用)。但是即使启用了自动完成、自动更正,这个也能正常工作。
    • 这不适用于我的 Android Cordova 项目,有什么解决方法吗?
    【解决方案3】:

    我对这个话题的发现:

    此问题并非特定于 Android,而是 Android 键盘。 maxlength 适用于谷歌键盘。maxlength 不适用于三星键盘。 => 见https://github.com/ionic-team/ionic/issues/11578#issuecomment-323403990

    甚至更重要的是 - 这不是一个错误,而是一个特性:

    【讨论】:

      【解决方案4】:

      为了防止这种情况,你应该使用(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,在此代码运行后也应该调用它(例如更新字符计数器)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-07-15
        • 1970-01-01
        • 1970-01-01
        • 2021-01-20
        • 1970-01-01
        • 1970-01-01
        • 2018-06-19
        相关资源
        最近更新 更多