1216 Stimmen

So verhindern Sie das Absenden von Formularen über Schaltflächen

Auf der folgenden Seite wird das Formular mit Firefox mit der Schaltfläche "Entfernen" abgeschickt, mit der Schaltfläche "Hinzufügen" jedoch nicht.

Wie kann ich die remove Schaltfläche vom Absenden des Formulars ab?

function addItem() {
  var v = $('form :hidden:last').attr('name');
  var n = /(.*)input/.exec(v);

  var newPrefix;
  if (n[1].length == 0) {
    newPrefix = '1';
  } else {
    newPrefix = parseInt(n[1]) + 1;
  }

  var oldElem = $('form tr:last');
  var newElem = oldElem.clone(true);
  var lastHidden = $('form :hidden:last');

  lastHidden.val(newPrefix);

  var pat = '=\"' + n[1] + 'input';

  newElem.html(newElem.html().replace(new RegExp(pat, 'g'), '=\"' + newPrefix + 'input'));
  newElem.appendTo('table');
  $('form :hidden:last').val('');
}

function removeItem() {
  var rows = $('form tr');
  if (rows.length > 2) {
    rows[rows.length - 1].html('');
    $('form :hidden:last').val('');
  } else {
    alert('Cannot remove any more rows');
  }
}

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
<html>
<body>
    <form autocomplete="off" method="post" action="">
        <p>Title:<input type="text" /></p>
        <button onclick="addItem(); return false;">Add Item</button>
        <button onclick="removeItem(); return false;">Remove Last Item</button>
        <table>
            <th>Name</th>

            <tr>
                <td><input type="text" id="input1" name="input1" /></td>
                <td><input type="hidden" id="input2" name="input2" /></td>
            </tr>
        </table>
        <input id="submit" type="submit" name="submit" value="Submit">
    </form>
</body>

</html>

0 Stimmen

Welche Antwort empfehlen Sie bitte?

11voto

SUNIL DHAPPADHULE Punkte 2413

Der Rückgabewert false verhindert das Standardverhalten, aber der Rückgabewert false unterbricht das Blubbern zusätzlicher Klickereignisse. Das heißt, wenn es nach dem Aufruf dieser Funktion noch andere Klick-Bindungen gibt, werden diese nicht berücksichtigt.

 <button id="btnSubmit" type="button">PostData</button>
 <Script> $("#btnSubmit").click(function(){
   // do stuff
   return false;
}); </Script>

Oder Sie können einfach so formulieren

 <button type="submit" onclick="return false"> PostData</button>

8voto

Sorin Punkte 2178

Ich bin sicher, dass bei FF die

removeItem 

Funktion stößt auf einen JavaScript-Fehler, der im IE nicht auftritt

Wenn ein Javascript-Fehler auftritt, wird der "return false"-Code nicht ausgeführt, so dass die Seite zurückkehrt.

6voto

Vishal Kumar Punkte 1043

Setzen Sie Ihre Schaltfläche auf normale Weise und verwenden Sie event.preventDefault wie

   <button onclick="myFunc(e)"> Remove </button>  
   ...
   ...

   In function...

   function myFunc(e){
       e.preventDefault();
   }

4voto

WonderWorker Punkte 7910
return false;

Sie können am Ende der Funktion oder nach dem Funktionsaufruf false zurückgeben.

Solange es das Letzte ist, was passiert, wird das Formular nicht abgeschickt.

0 Stimmen

Wenn Sie das Attribut "erforderlich" für die mit der Schaltfläche verknüpften Felder haben, verschwindet es. Irgendeine Idee?

2voto

axiom82 Punkte 622

Hier ist ein einfacher Ansatz:

$('.mybutton').click(function(){

    /* Perform some button action ... */
    alert("I don't like it when you press my button!");

    /* Then, the most important part ... */
    return false;

});

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X