Android Jelly Bean WebView与文本框的HTML maxlength属性不兼容

Android Jelly Bean WebView与文本框的HTML maxlength属性不兼容,android,webview,maxlength,android-4.2-jelly-bean,Android,Webview,Maxlength,Android 4.2 Jelly Bean,Jelly Bean似乎不喜欢用于文本输入的HTML的maxlength属性。它当然会限制输入字符的数量,但当您尝试键入超出允许数量的字符时,文本框将失败。现在,您将无法输入任何其他文本框,也无法删除该文本框中已输入的字符 如果您还没有遇到过这个问题,那么您可以自己在一个简单的HTML上进行尝试并检查。请告诉我您是否有任何解决此问题的线索。我打开了以下android问题:。如果您遇到此问题,请启动它,以便引起注意并解决。我的应用程序中也遇到过同样的问题 现在我已经用js处理了它,它从输入文本和文

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


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

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

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

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

代码也可在


此问题的bug已在

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

​<input type="text" class="abc" onkeypress="if(this.value.length > 9) return false;"/>​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​
​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​

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

在android清单文件中提供“写入外部存储”权限


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

分别处理输入字段的按键,其中需要通过添加单独的类来限制maxlength,并监听该类的按键

HTML


注:这发生在android的WebView中。这只是一个例子,假设一个字段中最多需要10个字符,可能在电话号码字段中。这在手机上根本不起作用。IOSI也没有在上面的代码中添加rahul的建议。另外,如果您希望此代码只为Jelly bean运行,您可以在下面的block`var中输入此代码ver=window.navigator.appVersion;ver=ver.toLowerCase();如果(ver.indexOf(“android 4.1”)>=0){//此处需要的代码}`是的,您可以通过js随时这样做。只是DOM停止监听用户的触摸事件。
​<input type="text" class="abc" onkeypress="if(this.value.length > 9) return false;"/>​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​
<textarea ng-model="model " rows="3" maxlength="100" cols="70" class="custom_txtarea ng-pristine ng-valid charlength" placeholder="Achievements"></textarea>
$(".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();
           }
       }
   });