[英]Two conflicting buttons inside a form
所以我有一个<form>
,里面有一个<input>
元素。
我还有两个按钮, <button onclick="addActivity()">Add Form</button><br>
是调用append()
函数。 <input type="submit" name="submit" value="submit">
的另一个按钮是一个提交按钮,它会将我重定向到display.php 。
为什么每次我点击<button onclick="addActivity()">Add Form</button><br>
,它会将我重定向到display.php ?
function append() { var newInput = document.createElement("INPUT"); newInput.setAttribute("type", "number"); document.getElementById("activity-div").appendChild(newInput); }
<form class="" action="display.php" method="post"> <div id="activity-div" class="activity-div"> Choose a number:<br> <input type="number" name="num" min="0" max="10"><br> </div> <button onclick="append()">Add Form</button><br> <input type="submit" name="submit" value="submit"> </form>
它在<form>
之外传输该按钮时有效,但我希望该按钮出现在提交按钮上方。
function append() { var newInput = document.createElement("INPUT"); newInput.setAttribute("type", "number"); document.getElementById("activity-div").appendChild(newInput); }
<form class="" action="display.php" method="post"> <div id="activity-div" class="activity-div"> Choose a number:<br> <input type="number" name="num" min="0" max="10"><br> </div> <input type="submit" name="submit" value="submit"> </form> <button onclick="append()">Add Form</button><br>
与代码有冲突吗? 有没有更好的方法在JavaScript中实现这一点?
改变它:
<input type="button" onclick="append()" value="Add Form" />
并添加:
e.preventDefault();
在append()函数中。
function append(){
e.preventDefault();
// your code
}
当type
属性我们没有用<BUTTON>
定义时,它采取submit
因此submit
form
默认行为,所以只需添加type="button"
<button type="button" onclick="append()">Add Form</button>
function append() { var newInput = document.createElement("INPUT"); newInput.setAttribute("type", "number"); document.getElementById("activity-div").appendChild(newInput); }
<form class="" action="display.php" method="post"> <div id="activity-div" class="activity-div"> Choose a number:<br> <input type="number" name="num" min="0" max="10"><br> </div> <input type="submit" name="submit" value="submit"> </form> <button type="button" onclick="append()">Add Form</button><br>
您可以尝试将type
属性添加到按钮:
<button onclick="append()" type="button">Add Form</button>
这告诉该按钮不是用于提交或任何其他内容。 你也可以尝试设置
e.preventDefault()
在功能:
append(e) {
e.preventDefault();
var newInput = document.createElement("INPUT");
newInput.setAttribute("type", "number");
document.getElementById("activity-div").appendChild(newInput);
}
在所有浏览器中,但较旧的IE,表单标记内的按钮的默认行为是提交。 要更改它,您应该明确定义type =“button”的buttong,或者您可以尝试阻止单击处理程序中的默认行为“e.preventDefault()”
function append() { var newInput = document.createElement("INPUT"); newInput.setAttribute("type", "number"); document.getElementById("activity-div").appendChild(newInput); }
<form class="" action="display.php" method="post"> <div id="activity-div" class="activity-div"> Choose a number:<br> <input type="number" name="num" min="0" max="10"><br> </div> <button type="button" onclick="append()">Add Form</button><br> <input type="submit" name="submit" value="submit"> </form>
使用此代码它应该工作正常,注意添加到按钮元素的type
属性。
您的代码很好,您应该只调用您正在使用的名称的函数,并添加类型属性。
这意味着在函数调用中,您可以在按钮中使用此名称时更改其名称。
<button onclick="addActivity()" type="button">Add Form</button><br>
function addActivity() {
var newInput = document.createElement("INPUT");
newInput.setAttribute("type", "number");
document.getElementById("activity-div").appendChild(newInput);
}
这应该工作正常。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.