0
votes

Comment puis-je effacer une valeur stockée dans une fonction Form.Submit

Le problème est que je tente de resoumettre un formulaire sans rafraîchir la page que le gestionnaire d'événements pour la soumission de formulaire conserve la valeur de la soumission précédente.

Le formulaire contient un élément sélectionné qui est peuplé avec des options d'une API. L'option sélectionnée est utilisée pour effectuer une URL de demande et obtenir des données de l'API. Lorsque le formulaire est soumis une seconde fois sans rafraîchir le formulaire. Soumettre le gestionnaire d'événements construit une URL avec la valeur précédente, puis il construit une URL avec la valeur nouvellement sélectionnée. J'ai essayé d'être réinitialisé sur le formulaire qui réinitialise l'élément Select à son état initial, mais cela ne efface pas la valeur précédemment sélectionnée dans le gestionnaire d'événements de soumission. P>

let $select = $(".breeds");

$select.append($(`<option>select breed</option>`))

for (var i=0; i<=breeds.length; i++){
  $select.append($(`<option></option>`).text(breeds[i]).html(breeds[i]))
}

$('.breeds').on('change', function(){
  console.log('on change running')
  let breed = $(".breeds :selected").text()
  console.log(`breed in on change: ${breed}`)
  watchForm(breed) 
})

function watchForm(breed) {
  console.log(`watchForm running`)
  console.log(`breed in watchform is: ${breed}`) //here breed logs as the value for first submission and then the second submission

  $('form').submit(event => {
    console.log(`breed in form submit is ${breed}`)
    event.preventDefault();
    //console.log(`num is ${num}`)
    getDogImage(breed);
    $('#myform').get(0).reset()
  });
}


3 commentaires

Chaque fois que vous modifiez l'option Sélectionner, un nouvel événement ONSUBMIT est joint au formulaire.


C'était la réponse merci. Je me suis débarrassé de la fonction Watchform et déplacé sur le formulaire Soumettre le gestionnaire sous la fonction ON.change. Merci.


Dupliqué possible de Comment réinitialiser un formulaire en utilisant jQuery avec. Méthode de réinitialisation ()


4 Réponses :


0
votes

Sélecteur JQuery peut renvoyer un ou plusieurs éléments, de sorte qu'il renvoie un tableau.

puisque RESET () est une fonction JavaScript et nous l'utilisons avec force dans JQuery, il nécessite un élément spécifique pour effectuer une action de réinitialisation. xxx


2 commentaires

@ L.f. Je suis d'accord. Amélioré ma réponse. Merci


Comment est-ce lié à la question?



0
votes

meilleure solution simple jamais Utilisez déclencheur ()

$ ('# myform'). Déclencheur ("réinitialiser");

Vous êtes prêt à partir !!


1 commentaires

Comment est-ce lié à la question?



0
votes

Vous pouvez utiliser quelque chose comme ça. $ ('myform'). val ('');


3 commentaires

Comment est-ce lié à la question? En outre, il n'y a pas d'éléments "myform" dans le code de l'OP.


Une petite correction pour cela il y a $ ('# myform'). Val ('');


??? Mais vous avez un sélecteur de balise, pas un sélecteur d'identifiant, et des formulaires n'ont pas de valeurs de toute façon ... mais toujours, la réinitialisation du formulaire n'est pas la question de OP ( $ ('# myform'). Obtenez (0) .Reset () fonctionne bien). Le problème est que ces multiples auditeurs de soumission, qui obtiennent une valeur incorrecte de la variable de race en raison de la fermeture.



0
votes

Utiliser vanilla JavaScript code> est le plus simple et le plus simple car ID code> est unique dans un document HTML.

document.getElementById("myForm").reset();


1 commentaires

Comment est-ce lié à la question?