Mettre à jour les prix en utilisant JS et JSON avec un simple formulaire HTML
P粉2949544472023-08-18 12:38:26
0
1
634
<p>J'essaie de créer une configuration dans laquelle vous entrez un code postal, soumettez le formulaire, puis utilisez JavaScript pour vérifier si les 4 premiers caractères du code postal correspondent au code postal dans certaines données JSON, et si c'est le cas , puis modifiez le prix sur la page. Ce sera pour un site Shopify, donc toute aide sur la fa?on de l'implémenter serait formidable. </p>
<p>Actuellement, lorsque je soumets le formulaire, la page s'actualise mais rien ne se passe. </p>
<p>Voici ce que j'ai jusqu'à présent, encore au début?: </p>
<p><br /></p>
<pre class="brush:js;toolbar:false;">fonction async checkZones() {
// const requestURL = "{{ 'zones.json' | Asset_url }}";
// const request = new Request(requestURL);
//const réponse = wait fetch(request);
// const zones = wait réponse.json();
zones const = [{
"nom": "zone 1",
"codes postaux": [
"test1",
"test2",
"test3",
"test4",
"test5",
"test6",
"test7",
"test8",
"test9",
"test10"
],
"co?t": 10,8
},
{
"nom": "zone 2",
"codes postaux": [
"test12",
"test13",
"test14",
"test15",
"test16",
"test17",
"test18",
"test19",
"test18",
"test19",
"test20"
],
"co?t": 16,8
}
]
console.log(zones);
updatePrix()
}
fonction updatePrix(zone) {
const postcodeFormInput = document.querySelector('#postcodeForm input[type="text]"');
const codes postaux = zone.codes postaux?;
pour (code const des codes postaux) {
if (postcodeFormInput.value.contains(code)) {
const productPrice = document.querySelector('#ProductPrice-product-template').textContent;
si (code === "test1") {
const newPrice = productPrice + zone.cost?;
document.querySelector('#ProductPrice-product-template').innerHTML = newPrice;
}
}
}
}</pré>
<pre class="brush:html;toolbar:false;"><form onsubmit="checkZones()" id="postcodeForm">
<type d'entrée="texte">
<button type="submit">Co?ts de mise à jour</button>
</form><span id="ProductPrice-product-template">0,00</span></pre>
<p><br /></p>
Utilisez le gestionnaire d'événements de soumission et empêchez la soumission
Vous ne transmettez pas de zones aux fonctions qui en ont besoin
Vous devez vous assurer que les montants utilisés dans le calcul sont des nombres et non des cha?nes (cha?nes extraites de innerText et .value) - J'ai utilisé un signe plus dollar +將其轉(zhuǎn)換為數(shù)字或0(如果未定義),并使用條件鏈接運(yùn)算符?. pour gérer les codes postaux manquants
Vous pouvez utiliser Find pour obtenir la zone contenant un tableau de codes postaux