2010-05-19 7 views
0

У меня возникла проблема с созданием кнопки с текстом и изображением на ней.HTML + кнопка с текстом и изображением на нем

<td> 

<button type="submit" name="report" value="Report" 
<?php 
if($tab == 'Excel') 
    echo "id=\"tab_inactive\""; 
else 
    echo "id=\"tab_active\"" ; ?>> 
<img src="images/report.gif" alt="Report"/>Report 
</button> 

<button type="submit" name="excel" value="Excel" 
<?php 
if($tab == 'Excel') 
    echo "id=\"tab_active\""; 
else 
    echo "id=\"tab_inactive\"" ; ?>> 
<img src="images/Excel.gif" alt="Excel" width="16" height="16" /> Excel 
</button> 

</td> 

Здесь $ вкладка

$tab = strlen(trim($_POST[excel]))>0 ? $_POST[excel] : $_POST[report]; 

Я попробовал этот путь, но это ведет себя так странно. Нажмите кнопку: - Функция отправки работает правильно в firefox, но не в IE.

Вместо представления значения (в этом примере значения представляют собой «Отчет» и «Excel»), действительно, он представляет метку кнопки.

То есть, если я проверяю значение массива PRINT_R ($ _ POST). Значение этого является

Array ([report] =>(Icon that i used) Report 
     [excel] => (Icon that i used) Excel 
     [frm_analysis] => [to_analysis] =>) 

Здесь я больше чем на 1 кнопку, то все метки представляются Eventhough один из них нажата. Я не собираюсь записывать, какая кнопка нажата.

Я даже попробовал сменить button type=button and onclick="document.formname.submit()" Даже в этом и получается.

Не могли бы вы помочь мне решить эту проблему.

ответ

1

<button> s нарушены в IE. Я думаю, что они исправили его в IE7 или 8. Является ли страница в стандартном режиме? Это может помочь в IE7 или 8.

Если вам нужна поддержка сломанной версии, вы можете попробовать и обойти ее с помощью JS, если вы не против быть зависимой от нее.Пример:

<script type="text/javascript"> 
    function buttonclicked(button) { 
    button.form.elements["buttonclicked"].value = this.value; 
    } 
</script> 

<input type="hidden" name="buttonclicked" value=""> 
<button type="submit" name="report" onclick="buttonclicked(this)"> 
<img src="images/report.gif" alt="Report"/>Report 
</button> 
<button type="submit" name="excel" onclick="buttonclicked(this)"> 
<img src="images/Excel.gif" alt="Excel" width="16" height="16" /> Excel 
</button> 

Я не думаю, что есть какой-либо другой способ, кроме избегая <button> и использования <input type=submit> если вам нужно различать между которыми на была нажата.

0
<button title="Search" onClick="javascript:executeFunction();">Search<br /><img src="images/search_icon.gif"/><br />More Text</button> 
+0

Благодарим за быстрый ответ. Здесь onclick я хочу отправить форму. поэтому, если я пишу onclick = document.Formname.submit() ;. Как я узнаю, какая кнопка нажата. Нужно ли мне обрабатывать значение этой кнопки через скрытые текстовые поля в моем javascript или любой другой альтернативе? – satya

+0

Лично я бы использовал функцию executeFunction (this), и пусть функция executeFunction() установит скрытое поле, чтобы определить, какая кнопка была нажата (идентифицирована этим), прежде чем выполнять фактическое представление из функции –

0

, поскольку ваше изображение включено в <button> (<input>?) тега, то, скорее всего, включаются в стоимость.

Почему бы не использовать img с событием onclick или href с запросом GET?

1

Это, к сожалению, поведение IE по умолчанию при работе с элементами <button>. По-моему, нет реального решения этой проблемы, хотя, конечно, существует множество обходных решений.

Мое предложение будет выглядеть следующим образом:

Создание кнопки управления радио под названием report_type (или как вы выбираете), с двумя кнопками радио: один для Excel и один для отчета. Кроме того, включите обычную кнопку отправки.

С Javascript (если он включен) вы можете скрыть кнопки радиосвязи и отправки (display: none) и создать (через JS) две кнопки с надписью «Отчет» и «Excel». При нажатии одной из этих кнопок установлен правильный переключатель, и форма отправляется.

Это позволит вам создать форму в текущей форме, обеспечивая при этом рабочий резерв для пользователей без поддержки javascript.

И вместо значения кнопки вы можете теперь посмотреть на значение Radio, чтобы решить, какую форму отчетности вы хотите использовать.

0

не проверял, только одна мысль:

<td> 

<button type="submit" name="active_page" value="Report" 
<?php 
if(isset($_POST['active_page']) && $_POST['active_page'] == 'Excel') 
    echo "id=\"tab_inactive\""; 
else 
    echo "id=\"tab_active\"" ; ?>> 
<img src="images/report.gif" alt="Report"/>Report 
</button> 

<button type="submit" name="active_page" value="Excel" 
<?php 
if(isset($_POST['active_page']) && $_POST['active_page'] == 'Excel') 
    echo "id=\"tab_active\""; 
else 
    echo "id=\"tab_inactive\"" ; ?>> 
<img src="images/Excel.gif" alt="Excel" width="16" height="16" /> Excel 
</button> 

</td> 

действительно не понимаю вашу проблему, это так:

Вы хотите прямо сейчас которым кнопка была нажата, чтобы показать вкладку или и другие вкладка? Правильно?

Смежные вопросы