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

时间:2012-12-14 16:10:57

标签: c# javascript html forms webmatrix

  

可能重复:
  Javascript add delete row sends form instead of adding row

我有一个包含两种表单的页面。

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

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

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

按钮:

<td class="entry" colspan="3"><button onclick="changeSpec()">Change Species</button></td>

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

<form id="specChange" action="" method="get"><input id="hiddenSpec" type="hidden" value='@oppSpec' /></form>

JavaScript函数:

function changeSpec() 
{
    alert($("#hiddenSpec").val());
}

当我点击普通按钮元素时,我收到服务器端错误(YSOD)......我的意思是,WOW,没有看到即将到来,哈哈。

我得到的错误与此无关,因为它是一个查询字符串中的一些转换错误我仍然要整理(此YSOD发生,此刻,任何时候大表格[不是上面显示的那个]是提交)。此YSOD也是运行时错误,而不是编译器错误,因为页面加载没有问题,直到它认为它已提交,并且随后执行IsPost分支。

无论如何,我可以告诉你(即使我设置了onclick =“”),这个按钮,它确实存在于大表格中,实际上是在尝试提交表单吗?

我以前不仅使用其他形式的常规按钮元素,而且一直认为常规按钮永远不会提交表单,我也已经多次清除缓存,只是为了确保没有任何愚蠢(在该级别上)正在进行。无论如何,似乎我需要一个关于如何通过html表单解释普通按钮元素的教育。

请帮助,我真的在这里不知所措。这怎么可能?

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

2 个答案:

答案 0 :(得分:4)

来自W3C button wiki page

  

缺失值default [for type]是Submit Button状态。

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

答案 1 :(得分:2)

看看:http://www.w3schools.com/tags/tag_button.asp

  

提示和注释

     

注意:如果您在HTML表单中使用该元素,则不同   浏览器可以提交不同的值。用于创建按钮   一个HTML表单。

如果您想要一个不提交表单的按钮,请使用<input type=button />HTML button to NOT submit form

干杯。