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?

22voto

Shiala Punkte 488

$("form").submit(function () { return false; }); das verhindert, dass die Schaltfläche übertragen wird, oder Sie können den Schaltflächentyp einfach in "Schaltfläche" ändern <input type="button"/> anstelle von <input type="submit"/> Das funktioniert nur, wenn diese Schaltfläche nicht die einzige Schaltfläche in diesem Formular ist.

2 Stimmen

Dies ist für jQuery, ein Äquivalent in Javascript ist: myform.onsubmit = function() {return false} ... auch, selbst wenn Sie die Schaltfläche "Senden" zu entfernen, könnte das Formular auch durch Drücken der Eingabetaste von einem anderen Formularfeld gesendet werden.

21voto

Prateek Joshi Punkte 3703

Angenommen, Ihr HTML-Formular hat id="form_id"

<form id="form_id">
<!--your HTML code-->
</form>

Fügen Sie dieses jQuery-Snippet in Ihren Code ein, um das Ergebnis zu sehen,

$("#form_id").submit(function(){
  return false;
});

20voto

Abdulrahman Punkte 517

Buttons wie <button>Click to do something</button> sind Schaltflächen zum Absenden.

Sie müssen Folgendes hinzufügen type

14voto

Renato Probst Punkte 5557

Dies ist ein html5-Fehler, wie gesagt wurde, können Sie immer noch die Schaltfläche als eine übermitteln (wenn Sie sowohl Javascript und nicht-Javascript-Benutzer abdecken möchten) mit es wie:

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

Auf diese Weise werden Sie die Übermittlung abzubrechen, aber immer noch tun, was Sie tun, in jquery oder javascript function `s und tun die Übermittlung für Benutzer, die nicht über Javascript.

13voto

Mselmi Ali Punkte 883

Einfach hinzufügen e.preventDefault(); in Ihrer Methode sollte verhindern, dass Ihre Seite Formulare absendet.

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

Según el MDN-Webdokumente

Die Methode preventDefault () der Ereignisschnittstelle teilt dem Benutzer mit Agent mit, dass, wenn das Ereignis nicht explizit verarbeitet wird, die Standard Aktion nicht berücksichtigt werden soll, wie es normalerweise der Fall wäre. Das Ereignis pflanzt sich wie gewohnt fort, es sei denn, einer seiner Zuhörer aufruft. stopPropagation () o stopImmediatePropagation () entweder von was die Fortpflanzung beendet.

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