11521 sujets

JavaScript, DOM et API Web HTML5

Bonjour à toutes et tous,

Je suis malheureusement pas bonne du tout en Javascript (pourtant j'essaye de comprendre ^^) du coup je galère pas mal pour une simple opération...
Voici mon problème:

J'ai un formulaire qui génère une url avec les données saisies par l'utilisateur pour une plateforme de paiement en ligne.
L'utilisateur doit saisir dans un input un montant à virgule (type xxx,x). La plateforme de paiement ne supporte pas les caractères spéciaux (donc la virgule), du coup j'aurai aimé multiplier le montant saisi par l'utilisateur par 100 pour que le montant soit entier (ex: 2000 pour 20,00).

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
</head>

<script> 
        function mafonction(){
		var a='#montant';
		var b=a*100;
		
		}
	function buildURL(){
		
		var foo = "https://www.tipi.budget.gouv.fr/tpa/paiement.web?numcli=xxxxx&exer="+$('#exer').val()+"&refdet="+$('#refdet').val()+"&objet=paiementtipi&montant="+$('#montant').val()+"&mel="+$('#mel').val()+"&urlcl=http://www.xxxxxxxxx.fr&saisie=T";
		
		window.open(foo,'_blank','height=1080, width=1920, toolbar=no,menubar=no,scrollbars=no, resizable=yes, location=no, directories=no, status=no');
	}

	
</script>	

<div class="mainBloc">

<a id="c5442"></a>
<h2>Pour payer votre facture en ligne, veuillez remplir le formulaire ci-dessous :</h2>
<form id="mailform" name="mailform" enctype="multipart/form-data" method="get" onsubmit="return validateForm('mailform','année,Année :,ref,Référence de la facture :,montant,Montant (en euros) :,email,Adresse email :','Votre message a correctement été envoyé','Ce champs est nécessaire.','')">
	<div style="display:none;">
		<input type="hidden" name="html_enabled" id="mailformhtml_enabled" value="" />
		<input type="hidden" name="subject" id="mailformsubject" value="" />
		<input type="hidden" name="locationData" value="1700:tt_content:5442" />
	</div>
	<fieldset class="csc-mailform">
		<div class="csc-mailform-field">
			<label for="mailformannee">Année :</label>
			<input type="text" name="exer" id="exer" size="30" min ="4" maxlength="4" required="required" placeholder="2015" value="" />
		</div>
		<div class="csc-mailform-field">
			<label for="mailformref">Référence de la facture :</label>
			<input type="text" name="refdet" id="refdet" size="30" min="18" maxlength="18" required="required" placeholder="Nombre à 18 caractères" value="" />
		</div>
		<div class="csc-mailform-field">
			<label for="mailformmontant">Montant :</label>
			<input type="text" name="montant" id="montant" size="30" min="3" placeholder="Format xxx,xx" required="required" value="" />
		</div>
		<div class="csc-mailform-field">
			<label for="mailformemail">Adresse email :</label>
			<input type="text" name="mel" id="mel" size="30" required="required" placeholder="toto@toto.com" value="" />
		</div>
	
		<div class="csc-mailform-field">
			<input type="submit" name="mailformformtype_mail" id="mailformformtype_mail" value="Envoyer" class="csc-mailform-submit" 
			onClick="buildURL();" />
		</div>
	</fieldset>
</form>
</div>
</html>


J'espère que c'est assez clair!
Modifié par Melal (13 Jan 2016 - 15:24)
Salut,
j'ai pas compris pourquoi le plateforme n'accepter pas les nombres à virgules, du coup tu te fais chier à faire une usine pour une virgules ^_^

Du coup je vois pas où est ton problème au niveau du code ? genre, t'a aucun résultat ? ton formulaire ne submit pas ? il submit avec un mauvais résultat ? ta fonction mafonction n'est pas appelé ?
Salut, dans ta fonction de multiplication par 100, tu essaye de multiplier du texte par 100, et non pas une valeur d'un input.

Ensuite il faut, comme ce ne sont pas des variables globale mais privées, donner quelque chose en retour.

Mais il manque encore quelque chose, dans ta fonction qui génère l'url, tu ne fais pas appel à cette fonction, donc ça ne risque pas de fonctionner Smiley cligne

Ensuite bizarre qu'une plate-forme de paiement n'accepte pas les décimales... Peut être c'est un séparateur décimale "." (point) qu'ils attendent ?

Edit: je vois que l'url est construite un peu beaucoup à l'arrache, il vaudrait mieux encoder chaque valeur et les encadré correctement par des " guillemets, ce qui permettrait, peut être d'arriver à faire passer des montants décimaux
Modifié par Super_baloo8 (14 Jan 2016 - 03:03)
Bonjour,

Effectivement les problèmes que l'on voit tout de suite dans ton code, c'est que ta fonction mafonction n'est jamais appellée, et elle ne renvoie rien, je te propose les modifications ci-dessous :
function mafonction(montant){
  montant = montant.replace(',', '.');
  var retour=parseFloat(montant)*100;
  return retour.toFixed(12); // toFixed pour régler le problème de précision des flottants javascript
}

// avec l'appel
var foo = "https://www.tipi.budget.gouv.fr/tpa/paiement.web?numcli=xxxxx&exer="+$('#exer').val()+"&refdet="+$('#refdet').val()+"&objet=paiementtipi&montant="+mafonction($('#montant').val())+"&mel="+$('#mel').val()+"&urlcl=http://www.xxxxxxxxx.fr&saisie=T";

Modifié par SolidSnake (14 Jan 2016 - 08:43)