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タグの後ろに差し込んでます。
これでうまくいきました。