2017-10-19 22 views
0

Je suis bloqué. Mon entreprise est en train de refondre son site Web, mais je suis bloqué en essayant de résoudre un problème avec l'ancien site. J'ai besoin d'utiliser JavaScript ou jQuery.Comment utiliser JavaScript/jQuery pour regarder les valeurs POST juste avant de soumettre

Lorsqu'un formulaire est soumis, une clé POST est envoyée au serveur qui commence par "selectedItem_" suivi de l'ID de l'élément. La valeur qui y est attachée est le texte du bouton "Acheter ceci". La clé complète: paire de valeurs ressemble à quelque chose comme ceci:

selectedItem_IDME1KEXN_0_0 : "Buy This" 

Parce que la forme a plusieurs versions différentes du même article, celui qui a mis plusieurs ce programmés boutons sur la forme, chacun avec ce genre de clé. Il peut donc y avoir jusqu'à 4 ou 5 boutons qui sont presque identiques. Les valeurs attribuées aux eux le prix de actualy, comme ceci:

selectedItem_IDME1KEXN_0_0 : 93.95 
selectedItem_IDME2KEXN_0_0 : 99.95 
selectedItem_IDME3KEXN_0_0 : 114.95 
selectedItem_IDME4KEXN_0_0 : 119.95 

Tous ces éléments sont envoyés se au serveur, ce qui est à l'origine du serveur de choisir parfois la mauvaise valeur. (Et je ne sais pas pourquoi il a été programmé comme ça, je suis juste en train de traiter avec elle!)

MA QUESTION:

Comment puis-je utiliser JavaScript ou jQuery pour évaluer ce qui est actuellement stocké dans le POST avant d'être envoyé au serveur? J'adorerais parcourir les touches qui commencent par "selectedItem_" et retirer les mauvaises avant qu'elles ne soient envoyées.

+0

Vous ne disposait pas d'informations assez dans votre presque question, cependant, vous peut probablement se lier à l'événement 'submit' du formulaire, intercepter les données de formulaire soumises, et même potentiellement annuler/empêcher le formulaire d'être soumis. En passant, une bonne question sur StackOverflow montre ce que vous avez essayé (c'est ce qu'on appelle un [Exemple Minimal, Complet et Vérifiable] (http://stackoverflow.com/help/mcve)) –

+0

Aussi - cela semble assez " entreprise "site - pourquoi êtes-vous bloqué en utilisant javascript? Ne pouvez-vous pas modifier le code côté serveur? –

+0

@cale_b - J'adorerais modifier le code côté serveur, mais tous les dev forward sont consacrés à la nouvelle base de code. Il n'y a que des correctifs autorisés sur l'ancien site et l'ancienne base de code. (Ugh) – cmdoc

Répondre

2

Vous pouvez lier un événement à l'événement submit du formulaire et consulter les données.

var $form = $('form').first(); 
 

 
$form.on('submit', function(e) { 
 
    e.preventDefault(); 
 
    console.log($form.serializeArray()); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<form method="POST" action=""> 
 
    <input type="text" name="key1" /> 
 
    <input type="text" name="key2" /> 
 
    <input type="submit" /> 
 
</form>

+0

Merci! C'est au moins me faire aller dans la bonne direction! Laissez-moi jouer avec ça et voir ce que je peux faire. – cmdoc

+0

Votre code m'a définitivement pointé dans la bonne direction. Merci! – cmdoc

0

Si toutes les données sont d'entrée balises de votre formulaire, essayez quelque chose comme ceci:

document.querySelector('form').addEventListener('submit', function (e) { 
    var input = document.querySelectorAll('input[name^="selectedItem_IDME"]'); 
    var valid = true; 
    for (var i = 0; i < input.length; i++) { 
     var item = input[i]; 
     if (Number(item.value) === 93.95) { 
      valid = false; 
      e.preventDefault(); 
     } 
    } 
}); 
+0

Si j'avais affaire à des pages statiques, cela aurait pu marcher. Mais tous les formulaires de commande sont générés dynamiquement en fonction de ce qui est en stock et les prix peuvent changer à tout moment. Donc, ma solution doit aussi être dynamique. – cmdoc