IE 6 и элементы с несколькими кнопками отправляют свои имена и значения - PullRequest
2 голосов
/ 20 февраля 2009

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

<?php

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

?>

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

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

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

Ответы [ 3 ]

3 голосов
/ 20 февраля 2009

Я нашел решение на 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);
1 голос
/ 07 июля 2009

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

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

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

0 голосов
/ 07 июля 2009

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

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

var buttons = $('input[type=submit], input[type=button]');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...