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