当我点击<a></a> <按钮> <a></a>?</button>时,为什么IE会提交POST请求

时间:2010-09-29 23:31:27

标签: html internet-explorer http

我有一个看起来像这样的表格:

<form method="post">
    {% csrf_token %}
    <table>
        {% for field in form %}
            {% partial "partials/field.html" field=field %}
        {% endfor %}
        <tr>
            <td></td>
            <td>
                <input name="save" type="submit" value="{% if is_new_entry %}Save{% else %}Update{% endif %}" class="submit" />
                {% if not is_new_entry %}
                    <input name="delete" type="submit" value="Delete" class="submit" />
                {% endif %}
                <a style="text-decoration:none" href="{% url dealership-entry %}"><button class="submit">New</button></a>
            </td>
        </tr>
    </table>
</form>

我希望“新建”按钮只是将GET请求提交回该href。这在FF中运行良好(尽管它在我必须隐藏的按钮后面放置了一个愚蠢的下划线),但在IE中它实际上提交了表单!

什么是最简单的方法来做我想要的?我正在考虑关闭表单,然后使用一个“新”按钮放置一个新表单,并将“href”放在操作中,但我认为不再是有效的XHTML,因为{ {1}}需要追踪</form>

我不想使用JavaScript。

5 个答案:

答案 0 :(得分:2)

按钮不仅仅是一个“风格”对象,而且还是一个功能对象。

您看起来需要的是锚标记(A),其样式似乎是一个按钮。你可以单独使用CSS,并且非常令人信服地使用CSS + Images来处理按钮状态。

锚标记内的按钮标记非常不标准(在技术上可能无效),这就是为什么你没有获得一致的行为。

答案 1 :(得分:1)

这甚至有效吗?在链接中放一个按钮?按钮应该根据表单的内容发布或获取。

你有

<form method="post">

所以它会发布。

也许使用类似jquery的东西来创建发布的链接?

应该是:

<form action="postform.php" method="post">

我相信你不会设置按钮样式,因为这是一个OS样式的东西。

答案 2 :(得分:0)

你的方法发布了,那会与它有什么关系吗?我可能正在读你错了

当带有提交类的按钮

时,所有浏览器似乎都会提交表单

答案 3 :(得分:0)

始终指定按钮的type属性。 Internet Explorer的默认类型是“按钮”,而在其他浏览器中(以及在W3C规范中),它是“提交”。

答案 4 :(得分:0)

我目前的解决方案是将“新建”按钮变为实际的<input type=submit>按钮并使用后端的重定向处理它,而不是与HTML和有效性斗争。