2010-05-19 93 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 2010-05-19 14:29:57

+0

就我个人而言,我会使用executeFunction(this),并让executeFunction()设置一个隐藏字段,以确定在从函数内部进行实际提交之前哪个按钮已被点击(由此识别) – 2010-05-19 15:21:45

0

因为你的图像包含在<button> (<input>?)标签内,它可能被包含在价值。

为什么不使用img与onclick事件或与GET请求的href?

1

不幸的是,这是IE在处理<button>元素时的默认行为。据我所知,这个问题没有真正的解决办法,虽然有很多解决方法。

我的建议如下:

创建一个名为report_type单选按钮控件(或者不管你选择),有两个单选按钮:一个用于Excel和一个报告。此外,请包含一个常规提交按钮。您可以隐藏单选按钮并提交按钮(display: none),并创建(通过JS)两个按钮,分别标记为“报表”和“Excel”。在点击其中一个按钮时,会检查适当的单选按钮,并提交表单。

这将允许您创建当前表单中的表单,同时为没有javascript支持的用户提供工作回退。

而不是按钮的值,你现在可以看无线电的价值,以决定你想要使用哪种形式的报告。

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> 

真的不明白你的问题,是这样的:

你想现在至极按钮被点击,以显示选项卡或和其他标签?对?