我对javascript相对比较绿,但是现在我有一个可以通过点击<button>
来修改的表单,然后最后他们应该能够点击提交按钮来实际提交并保存表单。
所有其他按钮都可以触发各自的javascript函数,但按下这一个按钮会改变特定<span id='planname'>
标记的innerHTML。
<td><span id=''></span><span id='planname'></span></td>
<td id='planopt'><button class='button square blue effect-2' onclick="changePlan('Myfixworked','change');">Change</button></td>
问题是当我点击这个按钮时,它会运行以下功能:
function changePlan(x,action){
if(action == 'change'){
var id = 'planname';
document.getElementById(id).innerHTML = x;
}
}
它改变了id的innerHTML,但是之后立即提交了表单。我尝试重命名id,它会产生相同的结果。我甚至尝试更改它触发的功能,并产生相同的结果。如果我更改了它会影响var id = 'planopt';
之后发生的任何ID的ID,它会很好用,更改innerHTML并且不提交表单。
任何帮助将不胜感激。综合代码如下。
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<script>
function changePlan(x,action){
if(action == 'change'){
var id = 'nameofplan';
document.getElementById(id).innerHTML = x;
}
}
</script>
</head>
<body>
<form action='' method='post' name='quote'>
<table border='0' style='border-collapse:collapse;' width='100%' id='serviceplan'>
<tr style='border-bottom: 2px solid #3D3D3D;'><th align='left' colspan='2'>Description</th><th align='left' width='30%'>Quantity</th><th width='10%'>Price</th><th align='right' width='25%'>Total</th></tr>
<tr style='border-bottom: 1px solid #3D3D3D;'><td class='subt' colspan='5'>Service Plan</td></tr>
<tr style='border-bottom: 1px dotted #3D3D3D;'>
<td align='left'><span id='nameofplan'>Your Plan</span></td>
<td id='planopt'><button class='button square blue effect-2' onclick="changePlan('Your New Plan','change');">Change</button></td>
<td>1</td>
<td align='center'>$<span id='planprice'>1.00</span>/month</td>
<td align='right'>$<span id='subplan'>1.00</span></td>
</tr>
</table>
</form>
</body>
</html>
答案 0 :(得分:6)
为您的按钮元素添加type='button'
属性。默认情况下,表单元素中的按钮元素充当提交按钮。
使用return false
或preventdefault
是错误的方法,因为您只是在抑制问题的症状(即您的按钮是提交按钮)。
答案 1 :(得分:1)
捕获事件并取消默认操作。
onclick = function (event) {
event.preventDefault();
}
您还可以在功能结束时return false;
,但如果发生任何错误,不会取消默认操作。