valor tipos son los lista etiquetas cuáles atributos atributo android webview maxlength android-4.2-jelly-bean

android - tipos - Jelly Bean WebView no funciona bien con el atributo maxlength de HTML para el cuadro de texto



tipos de input html (6)

A Jelly Bean no parece gustarle el atributo maxlength de HTML para la entrada de texto. Ciertamente restringe el número de caracteres de entrada, pero en el momento en que intenta escribir más allá del número permitido de caracteres, el cuadro de texto falla. Ahora no podrá escribir ningún otro cuadro de texto y tampoco podrá eliminar el carácter ya ingresado en ese cuadro de texto.

Si aún no se ha enfrentado a esto, pruébelo usted mismo en un simple HTML y verifique. Por favor, dime si tienes alguna pista para resolver esto.


Abrí el siguiente número de Android: 35823 . Si tiene este problema, ejecútelo para que pueda recibir atención y resolución.


si su caso es muy simple, una simple adición en su línea html puede funcionar también, de esta manera:

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


También he experimentado el mismo problema en mi aplicación

por ahora lo he manejado con js, que elimina todos los atributos de longitud máxima del texto de entrada y del área de texto y evita que el usuario ingrese más que el texto requerido. Aquí se supone que todo el texto de entrada y el área de texto tienen una identificación única.

El código también está disponible en 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)); } } }); } });​

El error para este problema ya se abrió en 35264


Esto ciertamente es un error de pesadilla de un desarrollador :) Hasta que te des cuenta de la causa raíz y sientas el momento "ahaaa ...". FYI: A pesar de que todos los campos de entrada en el DOM se congelan debido a este error, aún pude manipular y cambiar los valores de los campos de entrada usando Javascript.


Proporcione el permiso como WRITE_EXTERNAL_STORAGE "en el archivo de Manifest de Android.

Ahora en mi android 4.1.2 está trabajando con la aceptación del tipo de entrada número 7.


Maneje la pulsación de tecla por separado para los campos de entrada donde necesita restringir la duración máxima agregando una clase separada y escuchando la presión de tecla para esa clase.

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(); } } });