Searcher in Jquery

0

It is possible to search for strings that are not together with Jquery that is

I have this search engine

$(document).ready(function () {
		(function($) {
			$('#search').keyup(function () {
				var value = reemplazarAcentos($(this).val().toLowerCase())
            	var ValorBusquedaDos = new RegExp(value, 'i');
            $('#content .card').hide();
             $('#content .card').filter(function () {
               var filters = ValorBusquedaDos.test(reemplazarAcentos($(this).text()));
            	return filters;
            }).show();
        })
		}(jQuery));
	});


var reemplazarAcentos=function(cadena)
{
	var chars={
		"á":"a", "é":"e", "í":"i", "ó":"o", "ú":"u",
		"à":"a", "è":"e", "ì":"i", "ò":"o", "ù":"u", "ñ":"n",
		"Á":"A", "É":"E", "Í":"I", "Ó":"O", "Ú":"U",
		"À":"A", "È":"E", "Ì":"I", "Ò":"O", "Ù":"U", "Ñ":"N"}
	var expr=/[áàéèíìóòúùñ]/ig;
	var res=cadena.replace(expr,function(e){return chars[e]});
	return res;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<input id="search" type="text" />
<div id="content">
			
			<div class="card">Todo comenzó con la forja de los Grandes Anillos.</div>
			<div class="card">Tres fueron entregados a los Elfos inmortales, los más sabios y bellos de todos los seres.</div>
			<div class="card">Siete a los señores Enanos. Grandes mineros y artesanos de las cavidades montañosas.</div>
			<div class="card">Y Nueve... Nueve fueron entregados a la raza de los hombres... Que ansían por encima de todo el Poder.</div>
			<div class="card">En aquellos anillos residía el poder y la voluntad para gobernar a cada raza. Pero todos ellos fueron engañados... Pues otro Anillo más fue forjado... En la tierra de Mordor, en los fuegos del Monte del destino, el Señor Oscuro Sauron forjó en secreto el Anillo Regente para controlar a todos los demás. En ese Anillo descargó toda su crueldad, su malicia y su voluntad de dominar todo tipo de vida... </div>
			<div class="card">Un Anillo para gobernarlos a todos. Uno a uno, los pueblos libres de la Tierra Media fueron sometidos por el poder del Anillo.</div>
			<div class="card">Pero hubo algunos que resistieron. Una Última Alianza de Hombres y Elfos lucharon contra el ejército de Mordor. Y en las lomas del Monte del Destino libraron su batalla por la libertad de la Tierra Media. La victoria estaba próxima... Pero nada puede acabar con el Poder del Anillo... Y fué en aquel preciso momento, desvanecida ya toda esperanza, cuando Isildur, Hijo del Rey recurrió a la espada de su padre...</div>
			<div class="card">Sauron, el enemigo de los pueblos libres de la Tierra Media fue derrotado.</div>
			<div class="card">El Anillo llegó a manos de Isildur, que tuvo la oportunidad de destruir su mal para siempre. Pero el corazón de los hombres se corrompe con facilidad, y el Anillo de Poder goza de voluntad propia. Traicionó a Isildur hasta llevarle a la muerte.</div>
			<div class="card">Y aquellos hechos que nunca debieron caer en el olvido, se perdieron en el tiempo. La Historia se convirtió en Leyenda. La Leyenda se convirtió en Mito, y durante 2.500 años el Anillo pasó desapercibido. Hasta que cuando se presentó la ocasión encontró a un nuevo dueño... ¡Mi Tessoro! El Anillo acabó en manos de la criatura Gollum que lo ocultó en las profundidades de las Montañas Nubladas. Y allí, le consumió.</div>

I found a word or several without problem (The Ring ended up in the hands of the creature), I would like to know if it is possible to find (He ended up in the hands of the creature) omitting the word (ring).

meaning that the words are not consecutive

    
asked by daniel 30.10.2018 в 06:36
source

1 answer

2

As indicated in the comment, you can separate the search text in several words, looking for 1 to 1 and in case there is not one in the text, the card is not shown. An example would be as follows:

jQuery(document).ready(function () {
  (function ($) {
    $('#search').keyup(function () {
      var value = reemplazarAcentos($(this).val().toLowerCase())
      $('#content .card').hide();
      $('#content .card').filter(function () {
        return existText($(this).text(), value);
      }).show();
    })
  }(jQuery));
});

/**
 * Check if all words are containing into the text
 */
var existText = (text, search) => {
  // split text search in words
  var keys = search.split(' ');
  var valorBusquedaDos;
  var found = false;
  var keysLength = keys.length;
  var textWithoutAccents = reemplazarAcentos(text);

  for(var i = 0; i < keysLength; i++) {
    // search a word into the text
    valorBusquedaDos = new RegExp(keys[i], 'i');
    found = valorBusquedaDos.test(textWithoutAccents);
    // if not exist word return false
    if (!found) return false;
  }

  return true;
}

var reemplazarAcentos = function (cadena) {
  var chars = {
    "á": "a", "é": "e", "í": "i", "ó": "o", "ú": "u",
    "à": "a", "è": "e", "ì": "i", "ò": "o", "ù": "u", "ñ": "n",
    "Á": "A", "É": "E", "Í": "I", "Ó": "O", "Ú": "U",
    "À": "A", "È": "E", "Ì": "I", "Ò": "O", "Ù": "U", "Ñ": "N"
  }
  var expr = /[áàéèíìóòúùñ]/ig;
  var res = cadena.replace(expr, function (e) { return chars[e] });
  return res;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<input id="search" type="text" />
<div id="content">
			
			<div class="card">Todo comenzó con la forja de los Grandes Anillos.</div>
			<div class="card">Tres fueron entregados a los Elfos inmortales, los más sabios y bellos de todos los seres.</div>
			<div class="card">Siete a los señores Enanos. Grandes mineros y artesanos de las cavidades montañosas.</div>
			<div class="card">Y Nueve... Nueve fueron entregados a la raza de los hombres... Que ansían por encima de todo el Poder.</div>
			<div class="card">En aquellos anillos residía el poder y la voluntad para gobernar a cada raza. Pero todos ellos fueron engañados... Pues otro Anillo más fue forjado... En la tierra de Mordor, en los fuegos del Monte del destino, el Señor Oscuro Sauron forjó en secreto el Anillo Regente para controlar a todos los demás. En ese Anillo descargó toda su crueldad, su malicia y su voluntad de dominar todo tipo de vida... </div>
			<div class="card">Un Anillo para gobernarlos a todos. Uno a uno, los pueblos libres de la Tierra Media fueron sometidos por el poder del Anillo.</div>
			<div class="card">Pero hubo algunos que resistieron. Una Última Alianza de Hombres y Elfos lucharon contra el ejército de Mordor. Y en las lomas del Monte del Destino libraron su batalla por la libertad de la Tierra Media. La victoria estaba próxima... Pero nada puede acabar con el Poder del Anillo... Y fué en aquel preciso momento, desvanecida ya toda esperanza, cuando Isildur, Hijo del Rey recurrió a la espada de su padre...</div>
			<div class="card">Sauron, el enemigo de los pueblos libres de la Tierra Media fue derrotado.</div>
			<div class="card">El Anillo llegó a manos de Isildur, que tuvo la oportunidad de destruir su mal para siempre. Pero el corazón de los hombres se corrompe con facilidad, y el Anillo de Poder goza de voluntad propia. Traicionó a Isildur hasta llevarle a la muerte.</div>
			<div class="card">Y aquellos hechos que nunca debieron caer en el olvido, se perdieron en el tiempo. La Historia se convirtió en Leyenda. La Leyenda se convirtió en Mito, y durante 2.500 años el Anillo pasó desapercibido. Hasta que cuando se presentó la ocasión encontró a un nuevo dueño... ¡Mi Tessoro! El Anillo acabó en manos de la criatura Gollum que lo ocultó en las profundidades de las Montañas Nubladas. Y allí, le consumió.</div>
</div>
    
answered by 30.10.2018 / 11:01
source