Maison > Questions et réponses > le corps du texte
Sur la page suivante, en utilisant Firefox, la suppression du bouton soumet le formulaire, mais pas l'ajout du bouton.
Comment empêcher le bouton remove
de soumettre un formulaire ?
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>
P粉9081386202023-10-11 09:42:03
Vous utilisez un élément bouton HTML5. N'oubliez pas que la raison est que ce bouton a un comportement de soumission par défaut, comme indiqué dans la spécification W3, comme suit : Bouton HTML5 W3C一个>
Vous devez donc préciser explicitement son type :
<button type="button">Button</button>
Pour remplacer le type de soumission par défaut. Je voulais juste souligner pourquoi cela se produit.