Lecture d'un text dans un code javascript à partir de HTML

Joker_ Messages postés 190 Statut Membre -  
jordane45 Messages postés 40050 Statut Modérateur -

Bonjour,

le code html de mon formulaire est le suivant

<form action="test_faire.php" method="GET">
					<input type="hidden" name="code_article" value="" id="code_article">
					<input type="hidden" name="code_credit" value="<?php echo $code_credit?>">
					<input type="hidden" name="code_bs" value="<?php echo $code_bs?>">
				<table>
					<tr>
						<td valign="top">
								<div ><b>Trouver: </b>
									<input autofocus tabindex ="1" type="text" id="article_id" name="article" onkeyup="autocompletBS()" autocomplete=off  required="required" >
									<ul id="article_div"></ul>
								</div>
						<td valign="top">
							<input type="number" min="1"  value="1" id="q" name="quantite"   tabindex ="2" autocomplete=off size="3" step="1">
						<td valign="top">
							<input type="image" value="Ajouter " src="ajouter_rose.jpg" height="30" width="30">	

					</table>
 </form>

d'autre part le code javascrip dans le meme fichier php qui s'appelle test.php est le suivant:

<script type="text/javascript">
function autocompletBS() {
		confirm();
		var keyword = $('#article_id').val();
		confirm();
		$.ajax({
			url: 'ajax_refresh_code_barre.php',
			type: 'POST',
			data: {keyword:keyword},
			success:function(data){
				$('#article_div').show();
				$('#article_div').html(data);
			}
		});

}
function set_item4(item) {
	// change input value
	$('#article_id').val(item);
	// hide proposition list
	$('#country_list_id_bs_credit').hide();
}  
</script>

cette page  ne fonctionne pas comme je veux, pour cela j'ai pensé à executer des messageBox dans le code javascript pour connaitre l’état de mes variable, j'ai découvert quelque chose bizare; le code ne s'execute pas après la ligne         var keyword = $('#article_id').val(); car un seul messageBox a apparu lorsque je tape le clavier!!!!

 svp aider moi çà comprendre mon problème.
Windows / Firefox 108.0

A voir également:

2 réponses

jordane45 Messages postés 40050 Statut Modérateur 4 756
 

Bonjour,

Déjà, au lieu de mettre des "confirm" , utilises des console.log

ça évitera que le programme ne se stoppe.

Ensuite, gère les éventuelles erreurs de l'appel AJAX

En gros

function autocompletBS() {
  var keyword = $('#article_id').val();
  console.log('keyword',keyword);
  $.ajax({
    url: 'ajax_refresh_code_barre.php',
    type: 'POST',
    data: {keyword:keyword},
    success:function(data){
      $('#article_div').show();
      $('#article_div').html(data);
    },
    error:function(err){
      console.log('ERREUR',err);
    }
  });

}
function set_item4(item) {
	// change input value
	$('#article_id').val(item);
	// hide proposition list
	$('#country_list_id_bs_credit').hide();
}  

Et puis, pense à regarder dans la console de ton navigateur ( après avoir activé le débugage du XHR (ou xmlhttprequest selon que tu utilises firefox (que je te recommande pour tes tests..) ou google chrome )

(tu peux aussi utiliser l'onglet "réseau" de la console du navigateur pour voir les appels ajax...

Maintenant, si ton but est de faire un autocomplete .. pourquoi ne pas utiliser celui de jquery ui ?

https://jqueryui.com/autocomplete/


0
Rmoea
 

Salut, j'ai remarqué ceci:

$('#article_id').val(item);

Alors que la méthode JQUERY .val n'accepte pas de paramètres comme dit dans la doc:

Ne serait il pas plus simple d'utiliser du pur JavaScript ici?

document.getElementById('article_id').value=''+item
//-- ou le mieux un mix des 2 parce que le sélecteur JQUERY est plus rapide à écrire
$('#article_id').value=''+item
//-- en JQUERY complétement mais bon on gagne pas grand chose:
$('#article_id').attr('value', ''+item)

Il est indispensable d'utiliser la console du navigateur, ne serait ce que pour voir les erreurs, et des console.log pour vérifier les valeurs quand on en a besoin.

-1
jordane45 Messages postés 40050 Statut Modérateur 4 756
 

La méthode JQUERY .val n'accepte pas de paramètres comme dit dans la doc

 N'importe quoi....  Bien sûr qu'on peut y mettre un paramètre... Ça sert justement à renseigner une valeur ..

D'ailleurs.. suffit de lire correctement la doc en question

https://api.jquery.com/val/#val2

0