No he podido escapar con éxito de Apostrophe en iPhone. Después de algunas investigaciones, parece que la función Smart Punctation está causando algunos problemas aquí. He intentado todo lo que puedo encontrar y nada ha funcionado.
Un usuario está ingresando texto en un campo y verifico si este texto es correcto. Aquí está mi código jQuery. El texto válido es EMPORER'S EYE o Emporer's Eye, pero ninguno aparece como válido en iPhone.
$("#actionButton").click(function() { var seats = $("#number2").val(); var apostrophe = '\u0027'; var error = null; if ((seats === "EMPORER\'S EYE") || (seats === 'Emporer\'s Eye')) { $("#message").fadeIn(); $("#draggable").fadeOut(); $("#draggable2").fadeOut(); } else { $("#messageWrong").fadeIn().delay(2500).fadeOut(); $("#draggable").fadeOut().delay(2500).fadeIn(); $("#draggable2").fadeOut().delay(2500).fadeIn(); } // If you really need setflag: var setflag = error != null; });Aquí hay un codepen que tengo de toda la función y el proceso que estoy tratando de armar. https://codepen.io/MaxwellR/pen/BaYGPJL
Para que la experiencia del usuario sea menos frustrante, me saltearía la verificación de los caracteres especiales, ya que esto es una pendiente resbaladiza.
Puede convertir tanto la entrada como el valor esperado a cierto formato que permite cierto grado de libertad en la forma en que las personas escriben las cosas. Considere este ejemplo:
const sanitizeString = string => string .trim() // remove surrounding whitespace .toLowerCase() // ignore the case .replaceAll(/[^\p{L}\s]/gu, '') // cut out all special characters .replaceAll(/\s+/g, ' '); // convert any consecutive whitespace to a spaceEsto puede ser un buen equilibrio entre ser correcto y tener cierta libertad para deletrear las cosas de manera diferente.
const string = 'Emporer\'s Eye'; const sanitizedString = sanitizeString(string); // sanitizedString is now "emporers eye"En su caso, podría tener un solo valor dentro de la condición y funcionaría:
if (sanitizedString(seats) === sanitizedString('Emporer\'s Eye')) { // some magic }