1
votes

JavaScript: location.replace ne fonctionne pas dans la fonction

Je crée une application Web et j'ai du mal à remplacer la page. Dans la fonction maPage () , quand je mets le location.replace ("file.html"); au début, ça marche si je n'insère pas entrées sur l'application Web, mais lorsque je mets location.replace ("file.html"); dans l'instruction if alors ne fonctionne pas du tout, et est-ce là où je dois mettre le location.replace .

S'il vous plaît, aidez-moi.

code js:

<form  id="formId" name="formId" >
        <label>sth </label><br><br>
        <label for="name"> name  </label>
        <input type="text" id="name" name="name" required>
        <fieldset>
        <legend>sth</legend>
        <ul class="class-radio" >
            <li> <input  type="radio" name="nameRadio" id="abc" value="abc" required><label for="abc">abc</label></li>
            <li> <input  type="radio" name="nameRadio" id="cdf" value="cdf"><label for="cdf">cdf</label></li>

        </ul>
        </fieldset>
        <input id="submit" type="submit" value="next" >
        </form>


6 commentaires

La raison la plus probable est que name n'est pas égal à "abc".


Je ne comprends pas votre description du problème.


@Pointy merci de me répondre, mais ce n'est pas ça .... parce que je l'ai testé en imprimant qc dans l'instruction if ... et il a été imprimé ...


Soumettez les boutons soumettre afin que vous ayez deux actions en même temps .... console.log () est votre ami avec des valeurs de débogage.


@Barmar Je suis vraiment désolé mais je ne suis pas de langue maternelle anglaise.Merci


@epascarello merci


3 Réponses :


1
votes

changez votre type de bouton en bouton. votre navigateur soumet en premier.

<form  id="formId" name="formId" >
        <label>sth </label><br><br>
        <label for="name"> name  </label>
        <input type="text" id="name" name="name" required>
        <fieldset>
        <legend>sth</legend>
        <ul class="class-radio" >
            <li> <input  type="radio" name="nameRadio" id="abc" value="abc" required><label for="abc">abc</label></li>
            <li> <input  type="radio" name="nameRadio" id="cdf" value="cdf"><label for="cdf">cdf</label></li>

        </ul>
        </fieldset>
        <input id="submit" type="button" value="next" >
        </form>
    var submit = document.getElementById("submit");
    submit.addEventListener("click",myPage);

    function myPage(){
        //location.replace("file.html"); // here this is working
        var name=document.formId.nameRadio.value;//name="abc"
        alert(name);
        if (name=="abc"){
            location.replace("file.html");//but here not
        }
    }


1 commentaires

Je pensais la même chose



0
votes

Vous pouvez arrêter l'envoi habituel du formulaire en ajoutant preventDefault () à votre fonction onClick.

<form id="formId" name="formId">
  <label>sth </label><br><br>
  <label for="name"> name  </label>
  <input type="text" id="name" name="name" required>
  <fieldset>
    <legend>sth</legend>
    <ul class="class-radio">
      <li> <input type="radio" name="nameRadio" id="abc" value="abc" required><label for="abc">abc</label></li>
      <li> <input type="radio" name="nameRadio" id="cdf" value="cdf"><label for="cdf">cdf</label></li>

    </ul>
  </fieldset>
  <input id="submit" type="submit" value="next">
</form>
var submit = document.getElementById("submit");
submit.addEventListener("click", myPage);


function myPage(e) {
  //prevent form submission
  e.preventDefault();

  var name = document.getElementById('formId').nameRadio.value;
  if (name == "abc") {
    location.replace("file.html"); 
  }
}


2 commentaires

Vous devez expliquer quel était le problème et comment vous l'avez résolu, pas seulement le code postal.


Ouais. Je pense que je l'ai frappé par accident.



0
votes

Il semble que vous souhaitiez plus de contrôle sur l'envoi du formulaire.
Vous pouvez changer le type d'entrée de soumettre à bouton; Renommez également ce bouton pour éviter confusion avec la méthode d'envoi du formulaire .
Vous pouvez également simplifier le code, en utilisant l'événement click directement sur l'entrée.
Voici quelque chose que vous pouvez essayer:

<html>
   <body>
      <form id="formId" name="formId">
         <label>sth</label><br><br>
         <label for="name">name</label>
         <input type="text" id="name" name="name" required>
         <fieldset>
            <legend>sth</legend>
            <ul class="class-radio">
               <li><input type="radio" name="nameRadio" id="abc" value="abc" required><label for="abc">abc</label></li>
               <li><input type="radio" name="nameRadio" id="cdf" value="cdf"><label for="cdf">cdf</label></li>
            </ul>
         </fieldset>
         <input id="btnSubmit" type="button" value="next" onclick="mySubmit()">
      </form>
      <script>
           function mySubmit()
           {
               var name = document.formId.nameRadio.value;
               if (name == "abc"){
                   location.replace("file.html");
               } else {
                   // Submit a form
                   document.formId.submit();
               }
           }
      </script>
   </body>
</html>


0 commentaires