52 votes

Soumettre le formulaire en utilisant la balise <a>

J'essaie de soumettre un formulaire par le biais de l'événement onclick sur la balise. J'ai essayé de déclencher document.myform.submit(), this.form.submit(), parentNode.submit() etc. mais rien de tout cela ne fonctionne ! En utilisant un bouton de soumission, le code fonctionne bien. Mais je veux utiliser une balise à la place de celui-ci. J'ai besoin d'aide.

            <form id="myform" name="myform" method="POST" action="process_edit_questionnaire.php?project=<?php echo $project_id; ?>">
                <input name="module" type="hidden" value="<?php echo $module_id;?>"/>
                <input name="project" type="hidden" value="<?php echo $project_id;?>"/>
                <input name="hidden_ques_id" type="hidden" value="<?php echo $data_array_ques[$j]['ques_id'];?>"/>

            <div id="question_block">

                <div id="serial_block">
                    <p id="s_original_<?php echo $j+1; ?>"><a href="#" onclick="showSelectBox(<?php echo $j+1; ?>)">Serial : 
                        <?php 
                        if($data_array_ques[$j]['ques_position']==NULL){ 
                            echo $j+1;                            
                        } 
                        else { 
                            echo $data_array_ques[$j]['ques_position'];         
                        } ?></a></p>
                    <p id="s_select_box_<?php echo $j+1; ?>" style="display: none;">Serial : 
                        <select name="serial">
                          <?php for($p=1;$p<=count($data_array_ques);$p++){ ?>
                                    <option value="<?php echo $p; ?>" <?php if($p==$data_array_ques[$j]['ques_position']){ echo "selected=\"selected\"";} ?> ><?php echo $p; ?></option>
                          <?php }  ?>
                        </select>
                    </p>
                </div>

                <div id="question_text">
                    <a href="#" onclick="showTextBox(<?php echo $j+1; ?>)"><p id="q_original_<?php echo $j+1; ?>"><?php echo $data_array_ques[$j]['ques_text']; ?></p></a>
                    <p id="q_text_box_<?php echo $j+1; ?>" style="display:none;"><textarea id="ques_text" name="ques_text" rows="3" cols="30"><?php echo $data_array_ques[$j]['ques_text']; ?></textarea></p>                     
                </div>

            </div>

            <div id="menu_block">
                <a href="" onclick="document.myform.submit()">Save Changes</a> |
                <a href="delete_question.php?project=<?php echo $project_id; ?>&module=<?php echo $module_id; ?>">Delete This Question</a>
            </div>
            </form>

75voto

krystan honour Points 3183

Vous pouvez le faire comme ceci avec du javascript brut

<html>
    <body>
        <form id="my_form" method="post" action="mailto://test@test.com">
            <a href="javascript:{}" onclick="document.getElementById('my_form').submit();">submit</a>
        </form>
    </body>
</html>

Pour ceux qui se demandent pourquoi j'ai un href dans ma balise d'ancrage, c'est parce qu'il s'agit d'une partie obligatoire d'une balise d'ancrage, cela peut très bien fonctionner sans mais ce n'est pas conforme aux spécifications. Donc, si vous voulez garantir le rendu, etc., vous devez donner au moteur une balise complète. C'est ce que fait l'exemple ci-dessus. Vous verrez href="#" est parfois utilisée, mais elle n'est pas toujours souhaitée car le navigateur modifie la position de la page.

14voto

Hemant Points 1

Si jquery est autorisé, vous pouvez utiliser le code suivant pour l'implémenter de la manière la plus simple qui soit :

<a href="javascript:$('#form_id').submit();">Login</a>

ou

<a href="javascript:$('form').submit()">Login</a>

Vous pouvez utiliser la ligne suivante dans votre balise head () pour importer jquery dans votre code

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>

6voto

Pranay Rana Points 69934

Soumettez votre formulaire comme ceci ...

Votre code HTML

    <form name="myform" action="handle-data.php"> Search: <input type='text' name='query' />
     <a href="javascript: submitform()">Search</a> 
   </form> 

Code JavaScript

  <script type="text/javascript"> 
        function submitform() {   document.myform.submit(); } 
   </script>

4voto

Ameni Points 41
<form  id="myform_id" action="/myMethode"  role="form"  method="post" > 
   <a  href="javascript:$('#myform_id').submit();" >submit</a>
</form>

4voto

Jigs Points 2606

Essayez ça :

Supposons un HTML comme celui-ci :

   <form id="myform" name="myform" method="POST" action="process_edit_questionnaire.php?project=<?php echo $project_id; ?>">
      <div id="question_block">
            testing form
        </div>
     <a href="javascript: submit();">Submit</a>
        </form>

JS :

   <script type='text/javascript'>
     function submit()
      {
         document.forms["myform"].submit();
      }
   </script>

vous pouvez le consulter ici : http://jsfiddle.net/Zm426/7/

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X