Estoy trabajando en this plugin y recibí un informe de error que decía que había algunos problemas con Android 2.3.Android: las entradas de texto no validan con el complemento de validación personalizado
Descargué el SDK de Android y probé el complemento en 2.3 y lo que parece suceder es que las entradas de texto no se validan y el error no se muestra o tiene errores. Otras entradas validan bien. Intenté en Android 4.0+ y parece estar funcionando bien. No sé por dónde empezar, ya que no sé de dónde viene el problema y no tengo un teléfono Android real para depurar estas cosas, y el emulador carece de herramientas de desarrollo y esas cosas.
Dudo que publicar un volcado de código aquí ayude, pero este es el método validate()
que se puede encontrar en js/idealforms.js
. El "error" debe provenir de aquí o de otro lugar en ese archivo, a menos que esté relacionado con CSS, lo que no creo.
/** Validates an input
* @memberOf Actions
* @param {object} input Object that contains the jQuery input object [input.input]
* and the user options of that input [input.userOptions]
* @param {string} value The value of the given input
* @returns {object} Returns [isValid] plus [error] if it fails
*/
validate: function (input, value) {
var isValid = true,
error = '',
$input = input.input,
userOptions = input.userOptions,
userFilters = userOptions.filters
if (userFilters) {
// Required
if (!value && /required/.test(userFilters)) {
error = (
userOptions.errors && userOptions.errors.required
? userOptions.errors.required
: 'This field is required.'
)
isValid = false
}
// All other filters
if (value) {
userFilters = userFilters.split(/\s/)
for (var i = 0, len = userFilters.length; i < len; i++) {
var uf = userFilters[i],
theFilter = typeof Filters[uf] === 'undefined' ? '' : Filters[uf],
isFunction = typeof theFilter.regex === 'function',
isRegex = theFilter.regex instanceof RegExp
if (
theFilter && (
isFunction && !theFilter.regex(input, value) ||
isRegex && !theFilter.regex.test(value)
)
) {
isValid = false
error = (
userOptions.errors && userOptions.errors[uf] ||
theFilter.error
)
break
}
}
}
}
return {
isValid: isValid,
error: error
}
}
¿Alguien puede ayudarme? Quiero hacer que este complemento funcione en tantas plataformas como sea posible, pero es difícil hacerlo sin tener un teléfono Android real.
** 1: ** Intenté eso, pero no hizo la diferencia. Sin embargo, estoy poniendo todo en un solo archivo, así que dudo que este sea el problema. ** 2: ** 'Filters' no es global, pero está dentro de un alcance mayor. No creo que el problema esté aquí tampoco. ** 3: ** '$ input' es local, no hay conflictos aquí. ** 4: ** Aunque el problema podría estar aquí, intenté reorganizarlo de una manera más "tradicional" pero el problema persiste ... Parece que este error es difícil de detectar ... Estoy pensando que podría ser un error con el navegador de Android en lugar de mi código real. Tal vez hay una forma de evitarlo ... quién sabe. Gracias de cualquier manera. +1 – elclanrs