11540 sujets

JavaScript, DOM et API Web HTML5

Bonjour,

Je suis en train de me prendre la tête depuis 3 jours sur un problème de script dont je n'arrive pas à comprendre et trouver la solution Smiley decu
J'espère que quelqu'un pourra m'aider Smiley smile

Avant les bouts de codes, voici mon problème en détail :

J'utilise un script jquery live-search qui permet de faire une recherche sur mes BDD sans actualiser la page, le script marche très bien !MAIS! cumulé avec prototype.js il ne marche plus.

Jusque là pas de soucis j'utilise un Noconflict et les scripts remarchent !SAUF! que... il ne marche qu'à moitié et je ne comprend pas pourquoi.

Lorsque j'écris un "mot" dans mon formulaire de recherche le script fonctionne mais qu'une seule fois, c'est à dire que si je change le "mot" pour faire une recherche le script ne marche plus.

Exemple: Je commence à rechercher "Voiture", le script s'arrête à "Voi" et il me dit qu'il ne trouve pas de résultats, impossible alors de continuer ma recherche ou même de la changer.

Voici le code de ma page de recherche :

<div id="main">
		<!-- Main Title -->
		<div class="icon"></div>

		<!-- Main Input -->
		<input type="text" id="search" autocomplete="on">

		<!-- Show Results -->
		<h4 id="results-text">Showing results for: <b id="search-string">Array</b></h4>
		<ul id="results"></ul>
</div>


Voici le code de mon script :

/* JS File */

// Start Ready
$j(document).ready(function() {  

	// Icon Click Focus
	$j('div.icon').click(function(){
		$j('input#search').focus();
	});

	// Live Search
	// On Search Submit and Get Results
	function search() {
		var query_value = $j('input#search').val();
		$j('b#search-string').text(query_value);
		if(query_value !== ''){
			$j.ajax({
				type: "POST",
				url: "/php/search.php",
				data: { query: query_value },
				cache: false,
				success: function(html){
					$j("ul#results").html(html);
				}
			});
		}return false;    
	}

	$j("input#search").live("keyup", function(e) {
		// Set Timeout
		clearTimeout($j.data(this, 'timer'));

		// Set Search String
		var search_string = $j(this).val();

		// Do Search
		if (search_string == '') {
			$j("ul#results").fadeOut();
			$j('h4#results-text').fadeOut();
		}else{
			$j("ul#results").fadeIn();
			$j('h4#results-text').fadeIn();
			$j(this).data('timer', setTimeout(search, 10));
		};
	});

});


Et les appels de scripts sur mon index :


	<script type="text/javascript" src="scripts/jquery-1.4.js"></script>
	<script type="text/javascript" src="scripts/prototype.js"></script>
	<script type="text/javascript" src="scripts/custom.js"></script>
	<script type="text/javascript" src="scripts/effects.js"></script>
	<script type="text/javascript" src="scripts/myajax.js"></script>


En clair, j'enlève l'appel de prototype.js et tout marche correctement. Et sinon ça ne marche qu'à moitié.

Si quelqu'un peux m'éclairer sur tout ça: merci d'avance !!! Smiley biggrin
Modifié par zubaran2013 (14 Jan 2015 - 18:35)
Bon! Je viens de passer 3jours comme un con pour rien!!! Mon prototype.js ne devait pas être à jour, avec une nouvelle version tout marche ! Smiley eek