IE 6 и несколько элементов кнопок, отправляющих их имя и значения

При использовании нескольких элементов кнопки в форме я понял, что IE7 отправляет innerHTML вместо значения кнопки. Все хорошее, что я подумал, я просто изменю свой PHP-код на этот

<?php if (isset($_POST['button-name'])) { add_product_to_cart(2); } ?> 

Теперь мой старый друг IE6 идет немного дальше, будучи неприятностью. Он отправляет все элементы кнопки независимо от того, на какой из них я нажимаю. Например, у меня есть три кнопочных элемента с именем «mint», «near-mint» и «standard». Быстрый print_r($_POST) сообщает мне, что все 3 имени были отправлены.

Думаю, для исправления этого будет какой-то JavaScript, а не самая элегантная ситуация, но я могу себе представить, что средний пользователь, все еще использующий IE6, недостаточно яркий, чтобы отключить свой JavaScript.

Как я могу это исправить?

Я нашел решение на http://www.codecomments.com/JavaScript/message756646.html

Все кредит автору на этой странице.

По запросу, вот код

 function buttonfix(){ var buttons = document.getElementsByTagName('button'); for (var i=0; i<buttons.length; i++) { buttons[i].onclick = function () { for(j=0; j<this.form.elements.length; j++) if( this.form.elements[j].tagName == 'BUTTON' ) this.form.elements[j].disabled = true; this.disabled=false; } } } window.attachEvent("onload", buttonfix); 

Это известная ошибка в Internet Explorer.

http://www.dev-archive.net/articles/forms/multiple-submit-buttons.html описывает обходное решение, которое не зависит от JavaScript.

Это сводится к «Использовать <input> и не создавайте свои кнопки для чего-то, кроме простого текста для своих ярлыков».

Решением является использование <input type="button"> и <input type="submit"> на вашей странице вместо <button type="button"> и <button> .

Обновление: если вы измените элементы button элементы input вы сможете найти их с помощью jQuery со следующим селектором:

 var buttons = $('input[type=submit], input[type=button]');