JavaScript - String.replace, acentos en filtro de busqueda

   
Vista:

String.replace, acentos en filtro de busqueda

Publicado por Jean edwards (1 intervención) el 08/01/2018 23:04:12
Hola soy nuevo en este mundo de programación y espero me puedan ayudar con este problemita.
ok les cuentos, estoy trabando un site en wordpres, y tengo una pestaña de colaboradores, me encontré un plugins muy útil para hacer búsqueda de personas LINK(https://github.com/chrisperish/WordPress-Staff-Plugin)
el problema que tengo es que no me filtra los nombres y apellidos con acentos, intente hacer esto,

1
2
3
4
5
6
7
8
function searchStaff(searchString)
{
    var query = searchString.replace("_", " ");
    var query = searchString.replace("a", "á");
    var query = searchString.replace("e", "é");
    var query = searchString.replace("i", "í");
    var query = searchString.replace("o", "ó");
    var query = searchString.replace("u", "ú");

pero solo me filtra siempre la ultima vocal espero me ayuden con esto.

CODIGO COMPLETO
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
//Get URL parameter for pre-sorting the contact list
function getUrlParameter(sParam)
{
    var sPageURL = window.location.search.substring(1);
    var sURLVariables = sPageURL.split('&');
    for (var i = 0; i < sURLVariables.length; i++)
    {
        var sParameterName = sURLVariables[i].split('=');
        if (sParameterName[0] == sParam)
        {
            return sParameterName[1];
        }
    }
}
//Search function for pre-sorting and textbox search
function searchStaff(searchString)
{
	var query = searchString.replace("_", " ");
    var query = searchString.replace("a", "á");
    var query = searchString.replace("e", "é");
    var query = searchString.replace("i", "í");
    var query = searchString.replace("o", "ó");
    var query = searchString.replace("u", "ú");
 
	var count = 0;
	jQuery('div.staff-box').each(function () {
        var jQuerythis = jQuery(this);
        if (jQuerythis.text().toLowerCase().indexOf(query) === -1) jQuerythis.closest('div.staff-box').hide();
        else
        {
        	jQuerythis.closest('div.staff-box').show();
        count++;
    }}
    );
    if (count === 0) jQuery('#msgNoResults').css('visibility','visible');
    else jQuery('#msgNoResults').css('visibility','hidden');;
}
//Search on textbox input
jQuery('#searchBox').keyup(function () {
    var query = jQuery.trim(jQuery('#searchBox').val()).toLowerCase();
    searchStaff(query);
});
//Search on dropdown list change
jQuery('#searchDDL').change(function () {
    var query = jQuery("#searchDDL option:selected").text().toLowerCase();
    searchStaff(query);
});
//Page load: Forces google docs table to format correctly and handles URL params
jQuery(document).ready(function(jQuery) {
	jQuery('table').removeAttr('style').css("border-collapse","separate");
	var department = getUrlParameter('department');
	if (department != 'undefined')
	{
		searchStaff(department);
	}
});
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve

String.replace, acentos en filtro de busqueda

Publicado por xve (2020 intervenciones) el 09/01/2018 07:49:57
Hola Jean, el problema es que siempre estas utilizando la variabe sin los cambios anteriores, por eso te realiza unicamente el cambio del último... prueba así:

1
2
3
4
5
6
7
8
function searchStaff(searchString)
{
    var query = searchString.replace("_", " ");
    query = query.replace("a", "á");
    query = query.replace("e", "é");
    query = query.replace("i", "í");
    query = query.replace("o", "ó");
    query = query.replace("u", "ú");

También puedes hacerlo con una expresión regular... revisa este código que he publicado:
https://www.lawebdelprogramador.com/codigo/JavaScript/4380-Eliminar-acentos-con-replace-utilizando-una-expresion-regular.html
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Revisar política de publicidad