IE7以下でbuttonタグのvalueが送信されない不具合の対処方法

以下のformでbuttonをクリックすると、"submit_button"という名前で"button_value"が送信されるはずなんですが、IE7以下だと"button_text"が送信されます。

<form method="POST">
    <input type="text" name="text_value"/>
    <button type="submit" name="submit_button" value="button_value">button_text</button>
</form>


この例だとbuttonタグを使う意味があまり無いですが、例えばdjangoのformwizardのサンプルだとwizardの「戻る」、「進む」にbuttonを使ってまして、こういうのがIE7以下だとダメってことになります。

Form wizard | Django documentation | Django

{% extends "base.html" %}
{% load i18n %}

{% block head %}
{{ wizard.form.media }}
{% endblock %}

{% block content %}
<p>Step {{ wizard.steps.step1 }} of {{ wizard.steps.count }}</p>
<form action="" method="post">{% csrf_token %}
<table>
{{ wizard.management_form }}
{% if wizard.form.forms %}
    {{ wizard.form.management_form }}
    {% for form in wizard.form.forms %}
        {{ form }}
    {% endfor %}
{% else %}
    {{ wizard.form }}
{% endif %}
</table>
{% if wizard.steps.prev %}
<button name="wizard_goto_step" type="submit" value="{{ wizard.steps.first }}">{% trans "first step" %}</button>
<button name="wizard_goto_step" type="submit" value="{{ wizard.steps.prev }}">{% trans "prev step" %}</button>
{% endif %}
<input type="submit" value="{% trans "submit" %}"/>
</form>
{% endblock %}


解決方法はググったら見つかりました。jQuery依存。
Fixing the POST value of the button element in IE 7 and below - Blog - Kamranicus - The Virtual Home of Kamran Ayub


ie6、7でbuttonタグをクリックした場合は、同じname、valueを持つhiddenフィールドをbuttonタグの後ろに差し込んでます。

これでうまくいきました。