Quiero hacer coincidir la última parte de la URL del sitio con un valor de entrada . Esta cadena comienza con # .
El valor de entrada puede tener acentos o no .
Esto es lo que tengo ahora mismo:
$(function () { var loc = window.location.href.split("#")[0]; // returns the full URL var href = location.href; var hrefM = href.match(/#([^\/]*)\/*$/)[1]; var hreflocation = hrefM.replace(/-/g, " ").toProperCase(); if (hreflocation) { $(".wpcf7-list-item :input[value= '" + hreflocation + "' ]").parent().addClass("active"); $(".wpcf7-list-item :input[value= '" + hreflocation + "' ]").attr("checked",true); } }); Funciona bien cuando no hay acentos. ¿Sabes cómo ajustar mi hrefM para que aunque esta palabra no tenga acentos sea igual que una input con acentos?
Por ejemplo, esta comparación no funciona ahora mismo:
url hreflocation = "#produccio" <input value="producció">Pero esta comparación funciona bien:
url hreflocation = "#produccio" <input value="produccio">En primer lugar, me gustaría señalar algunas cosas.
location.hash .<String>.toProperCase no es una función.En su lugar, puede hacer:
$(function() { if (location.hash) { const hash = location.hash.substring(1).replaceAll('-', ' '); const matchedInput = $(".wpcf7-list-item input").toArray() .find(input => input.value.normalize('NFKD').replace(/\p{Diacritic}/gu, '') == hash); } });hash toma el hash de ubicación, elimina el # y convierte todo - en $(".wpcf7-list-item input").toArray() selecciona todos los elementos de entrada dentro del .wpcf7-list-item y los convierte en una matriz (para permitirle procesarlos con JavaScript).find busca un elemento en la matriz cuyo valor, cuando se normaliza y se eliminan los signos diacríticos, es igual a hash Luego puede usar $(matchedInput) como quiera. Si, en cambio, desea una matriz de entradas coincidentes, puede reemplazar find con filter .