13

Jelly Bean 似乎不喜欢maxlengthHTML 的文本输入属性。它当然会限制输入字符的数量,但是当您尝试输入超出允许的字符数时,文本框就会失败。现在您将无法在任何其他文本框中键入内容,也无法在该文本框中删除已输入的字符。

如果您还没有遇到过这个问题,那么您可以自己在一个简单的 HTML 上尝试一下并检查一下。如果您有任何解决此问题的线索,请告诉我。

4

6 回答 6

20

我在我的应用程序中也遇到了同样的问题

现在我已经用 js 处理了它,它从输入文本和 textarea 中删除了所有 maxlength 属性,并阻止用户输入超过所需文本的内容。这里假设所有输入的文本和文本区域都有唯一的 id。

代码也可以在jsfiddle 获得

    $(document).ready(function () {

        var ver = window.navigator.appVersion;
            ver = ver.toLowerCase();

        if ( ver.indexOf("android 4.1") >= 0 ){            

            var idMaxLengthMap = {};

            //loop through all input-text and textarea element
            $.each($(':text, textarea, :password'), function () {
                var id = $(this).attr('id'),
                    maxlength = $(this).attr('maxlength');

                //element should have id and maxlength attribute
                if ((typeof id !== 'undefined') && (typeof maxlength !== 'undefined')) {
                    idMaxLengthMap[id] = maxlength;

                    //remove maxlength attribute from element
                    $(this).removeAttr('maxlength');

                    //replace maxlength attribute with onkeypress event
                    $(this).attr('onkeypress','if(this.value.length >= maxlength ) return false;');
                }
            });

            //bind onchange & onkeyup events
            //This events prevents user from pasting text with length more then maxlength
            $(':text, textarea, :password').bind('change keyup', function () {
                var id = $(this).attr('id'),
                    maxlength = '';
                if (typeof id !== 'undefined' && idMaxLengthMap.hasOwnProperty(id)) {
                    maxlength = idMaxLengthMap[id];
                    if ($(this).val().length > maxlength) {

                        //remove extra text which is more then maxlength
                        $(this).val($(this).val().slice(0, maxlength));
                    }
                }
            });
        }
    });​

此问题的错误已在35264处打开

于 2012-08-01T21:20:03.157 回答
6

如果您的情况非常简单,那么在您的 html 行中添加一个简单的内容也可以,如下所示:

​<input type="text" class="abc" onkeypress="if(this.value.length > 9) return false;"/>​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​
于 2012-08-02T05:18:16.483 回答
2

在 android Manifest 文件中提供权限为 WRITE_EXTERNAL_STORAGE"。

现在在我的 android 4.1.2 中,正在接受输入类型 7。

于 2013-06-21T10:50:00.640 回答
1

我打开了以下 android 问题:35823。如果您遇到此问题,请给它加星标,以便引起注意并解决。

于 2012-08-01T15:15:08.883 回答
1

这无疑是开发人员的噩梦 :) 直到您意识到根本原因并感受到“啊哈……”的时刻。仅供参考:即使 DOM 中的所有输入字段都因为这个错误而冻结,我仍然能够使用 Javascript 操作和更改输入字段的值。

于 2013-02-12T00:13:32.550 回答
1

单独处理需要通过添加单独的类来限制最大长度的输入字段的按键并监听该类的按键。

HTML

<textarea ng-model="model " rows="3" maxlength="100" cols="70" class="custom_txtarea ng-pristine ng-valid charlength" placeholder="Achievements"></textarea>

Javascript

$(".charlength").keypress(function(event) {
          if(event.which >= 32 || event.which == 13) {
          var maxLength = event.currentTarget.maxLength;
           var length = event.currentTarget.value.length;
           if(length >= maxLength) {                     
               event.preventDefault();
           }
       }
   });
于 2014-08-20T11:29:58.707 回答