常规按钮元素提交表单,这怎么可能?

Voi*_*ing 2 html javascript c# forms webmatrix

可能重复:
Javascript 添加删除行发送表单而不是添加行

我有一个包含两种形式的页面。

一种形式只有一个隐藏的输入元素,用于帮助连接查询字符串。

在另一个表单中,我有一个简单的按钮元素(不是输入类型提交按钮),想法是提交另一个表单 onclick(使用 JavaScript)。按钮就是这种形式。

就目前而言(出于测试目的),我目前所做的只是调用一个名为 changeSpec() 的 JavaScript 函数,其中绝对唯一的一行代码是一个警告框,它显示了隐藏输入元素的值。

按钮:

<td class="entry" colspan="3"><button onclick="changeSpec()">Change Species</button></td>
Run Code Online (Sandbox Code Playgroud)

带有隐藏输入元素的表单:

<form id="specChange" action="" method="get"><input id="hiddenSpec" type="hidden" value='@oppSpec' /></form>
Run Code Online (Sandbox Code Playgroud)

JavaScript 函数:

function changeSpec() 
{
    alert($("#hiddenSpec").val());
}
Run Code Online (Sandbox Code Playgroud)

当我单击普通按钮元素时,出现服务器端错误 (YSOD)...我的意思是,哇,没看到,哈哈。

我得到的错误与此无关,因为它是查询字符串中的一些强制转换错误,我仍然需要解决(此时,只要提交大表单 [不是上面显示的那个],就会发生这种 YSOD)。另外这个 YSOD 是运行时错误,而不是编译器错误,因为页面加载没有问题,直到它认为它已提交,并且随后执行 IsPost 分支。

无论如何,我可以以某种方式告诉(即使我设置 onclick=""),这个位于大表单中的按钮实际上是在尝试提交表单?

我之前不仅在其他表单中使用过常规按钮元素,而且一直认为常规按钮永远不会提交表单,我还多次清除缓存,只是为了确保没有任何愚蠢的(在那个级别)发生. 无论如何,似乎我需要接受有关 html 表单如何解释普通按钮元素的教育。

请帮忙,我在这里真的很茫然。这怎么可能?

谢谢,如果需要更多代码,请告诉我。

Jul*_*ain 5

W3C 按钮 wiki 页面

缺失值默认值 [for type] 是提交按钮状态。

换句话说,任何button没有type属性的都是提交按钮,默认情况下将提交表单。将您的代码更改为<button type="button" onclick="...">