Enviar o formulário com a marca

Estou a tentar enviar um formulário através da onclick event on tag. Tentei activar o documento.myform.submeta (), isto.formulario.submit (), parentNode.submeter () etc. mas nada disto está a resultar! Usando um botão enviar, o código funciona bem. Mas quero usar o tag no lugar disso. Preciso de Ajuda.

            <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>
Author: Potheek, 2012-04-06

8 answers

Podes fazê-lo assim com javascript em bruto

<html>
    <body>
        <form id="my_form" method="post" action="mailto://[email protected]">
            <a href="javascript:{}" onclick="document.getElementById('my_form').submit();">submit</a>
        </form>
    </body>
</html>
 40
Author: krystan honour, 2012-08-16 14:42:27

Submeta o seu formulário assim ...

O seu código HTML

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

Código JavaScript

  <script type="text/javascript"> 
        function submitform() {   document.myform.submit(); } 
   </script> 
 5
Author: Pranay Rana, 2012-04-06 08:13:35

Se o jquery é permitido então você pode usar o seguinte código para implementá-lo da maneira mais fácil como :

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

Ou

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

Pode utilizar a seguinte linha na sua etiqueta () para importar jquery para o seu código

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
 5
Author: Hemant Nagpal, 2015-10-13 08:48:53
Eis como o faria usando baunilha JS
<form id="myform" method="POST" action="xxx">
    <!-- your stuff here -->
    <a href="javascript:void()" onclick="document.getElementById('myform').submit();>Ponies await!</a>
</form>

Você pode jogar com os return falses e {[[2]} vs vazio e o que você precisar, mas este método funcionou para mim no Chrome 18, IE 9 e Firefox 14 e o resto depende principalmente do seu javascript.

 4
Author: Nenotlep, 2012-08-15 14:54:06

Tenta isto.:

Suponha HTML como este:

   <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>

Podes verificar aqui: http://jsfiddle.net/Zm426/7/

 4
Author: Jignesh Rajput, 2013-02-19 11:09:50

Existe alguma razão para não usar um botão Submeter e depois estilá-lo com css para corresponder às outras a?

Eu acho que isso reduziria a sua dependência de ter javascript ativado e ainda obter o resultado desejado.

 2
Author: CF5, 2015-11-12 10:27:28

Sugiro usar "return false" em vez de usar algum javascript no href-tag:

<form id="">
...
</form>

<a href="#" onclick="document.getElementById('myform').submit(); return false;">send form</a>
 1
Author: Rafael Kutscha, 2014-11-14 10:26:15

Você pode usar o botão enviar escondido e carregar nele usando o programa java / jquery desta forma:

  <form id="contactForm" method="post" class="contact-form">

        <button type="submit" id="submitBtn" style="display:none;" data-validate="contact-form">Hidden Button</button>
        <a href="javascript:;" class="myClass" onclick="$('#submitBtn').click();">Submit</a>

  </form>
 1
Author: Alaa' Agha, 2016-03-08 09:53:12