Internet Explorer и отправка изображений - PullRequest
0 голосов
/ 17 августа 2011

У меня довольно большая форма с несколькими (более 100) кнопками отправки. Сейчас я использую следующий код:

<input type='image' src='../images/add.png' name='FormDuplicate' value='" . $resInvoices['iProjectID']. "'>

Если я нажму на это изображение, оно отлично работает .. в Chrome , но не в IE (7 и 8). При нажатии в IE имя даже не передается (FormDuplicate).

Когда я сделал быстрый Google, я обнаружил, что IE не пропустит value отправленного изображения. Это заставляет меня использовать несколько форм, но по технической причине я не могу. Итак, какие у меня варианты?

Спасибо.

Обновление относительно комментария

Вот полный <tr>:

<tr class='invoice-tr-standard' id='row2' onClick="FormTRClick(event, '2')"><td><input type='checkbox' name='strFormFactuur[]' value='19512' id='chk2'>&nbsp;<img src='../images/link.png' border='0'></td>

  <td><a href='project_details.php?projectID=19512' target='_blank'>Project</a></td>

  <td>Jobinfo</td>

  <td>Customer</td>

  <td><input type='text' name='FormTextStrPOnummer' value='324'> <img src='../images/b_save.png' border='0' height='13px' style='cursor: pointer;'></td>

  <td>€ <input type='text' name='FormTextFltBedrag'  value='999.000'> <img src='../images/b_save.png' border='0' height='13px' style='cursor: pointer;'></td>

  <td><img src='../images/b_save.png' border='0' height='13px' style='cursor: pointer;'> <input type='image' src='../images/toevoegen.png' border='0' style='float: right; cursor: pointer;' name='FormDupliceer' value='19512'></td>

</tr>

А вот и последний <td> элемент текущей строки tr:

<td><img src='../images/b_save.png' border='0' height='13px' style='cursor: pointer;'> <input type='image' src='../images/toevoegen.png' border='0' style='float: right; cursor: pointer;' name='FormDupliceer' value='19512'></td>

Код не изменен и отображается в виде HTML-кода.

1 Ответ

1 голос
/ 17 августа 2011

IE будет передавать только координаты, поэтому ищите FormDuplicate.x и FormDuplicate.y в коллекции запросов, и, если она существует, это означает, что на FormDuplicate кликнуло изображение.

Что-то вроде:

if(isset($_POST['FormDuplicate.x'])) {
    //submitted by FormDuplicate
}

Из того, что я видел, другие браузеры также отправляют это (в дополнение к отправке значения), поэтому оно должно работать между браузерами.

Редактировать: чтобы сохранить и передать значение кликаемого изображения, добавьте этот код JavaScript на страницу:

window.onload = function() {
    var arrInputs = document.getElementsByTagName("input");
    for (var i = 0; i < arrInputs.length; i++) {
        var oInput = arrInputs[i];
        if (oInput.type == "image") {
            oInput.onclick = function() {
                var oHidden = document.createElement("input");
                oHidden.type = "hidden";
                oHidden.name =this.name;
                oHidden.value = this.value;
                this.form.appendChild(oHidden);
                this.value = "";
            };
        }
    }
};

Этот код динамически присоединяет обработчик события click ко всем входам типа image, в котором он будет создавать скрытый ввод на лету, присваивать его имя имени ввода изображения и его значение значению ввода изображения, затем добавьте скрытый ввод к родительской форме изображения, в результате чего значение будет передано правильно.
Чтобы избежать дублирования значений в браузерах, таких как FF или Chrome, код очищает введенное значение изображения после добавления скрытого элемента.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...