【问题标题】:The value of a <button>-element is not send along with the form<button> 元素的值不与表单一起发送
【发布时间】:2014-05-21 16:49:06
【问题描述】:

我认为&lt;button&gt;-element 的行为类似于普通的&lt;input&gt; 元素,因为按钮附加到表单并且可以具有名称和值。

但是在发送它的值时,它就不行了。这个&lt;button&gt; 的值永远不会被其他表单值传递:​​

<form action="" method="post">
    <fieldset>
        <button type="button" id="fieldname" name="fieldname" value="">
            Click to select …
        </button>
    </fieldset>
</form>

value-attribute 是通过 JavaScript 设置的,效果很好。

有没有办法在不使用额外隐藏&lt;input&gt;-元素的情况下解决这个问题? 有人能解释一下,为什么&lt;button&gt; 会这样吗?

【问题讨论】:

    标签: html forms button


    【解决方案1】:

    按钮只有在用于提交表单时才是成功的控件。

    你的按钮是type="button",所以它的存在只是为了挂起JavaScript。它不会提交表单。

    如果你把它改成type="submit"(或者把type属性完全去掉,因为submit是默认的),那么点击时它会提交表单,并且是一个成功的控件,它的名字和值会出现在提交的数据中.

    【讨论】:

    • 这意味着,如果我有多个按钮,在一个表单中具有 不同 名称和值,那么只有 提交 表单的那个会被发送, 正确的?假设我想构建一个带有很多按钮的 GUI,并且我想将 GUI 的当前状态存储在某个地方:然后我必须全部获取它们,将它们的值存储在额外的字段中并提交它们?
    • 是的,是的(或其他一些存储状态的方式)。
    【解决方案2】:

    如果您在 HTML 表单中使用 &lt;button&gt; 元素,不同的浏览器可能会提交不同的值。使用&lt;input&gt; 在 HTML 表单中创建按钮。 (http://www.w3schools.com/tags/tag_button.asp)

    你为什么不使用这个:

    <form action="" method="post">
        <fieldset>
            <input type="button" id="fieldname" name="fieldname" value="Click to select …" />
        </fieldset>
    </form>
    

    【讨论】:

      猜你喜欢
      • 2019-06-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-19
      • 2012-10-04
      • 2019-01-03
      相关资源
      最近更新 更多