通过表单提交特定按钮的名称

时间:2011-11-12 15:49:57

标签: php javascript

我有一个包含几个按钮的表单。我想让表单提交单击任何按钮(它们的名称属性都会有所不同),但由于它们都是提交的类型,我不知道如何检查哪一个被点击。有没有办法做到这一点?每个按钮看起来都像这样:

<input class='menuitem' type='submit' value="Bowl of Cheerios" name="5" />

1 个答案:

答案 0 :(得分:1)

为按钮指定名称意味着当用户通过单击该按钮提交表单时,它将包含在POST或GET中。

<input type="submit" name="myButton" value="submit button 1 was clicked" />
<input type="submit" name="myButton" value="submit button 2 was clicked" />

<?php echo ($_POST ['myButton']); ?>

由于值来自按钮中显示的文本,因此可能会导致有关国际化的问题。更好的方法是为所有提交按钮指定不同的名称,并检查是否存在特定按钮

<input type="submit" name="myButton1" value="submit button 1 was clicked" />
<input type="submit" name="myButton2" value="submit button 2 was clicked" />

<?php echo (isset ($_POST ['myButton1'])? 'Button 1 was clicked': ''); ?>
<?php echo (isset ($_POST ['myButton2'])? 'Button 2 was clicked': ''); ?>

使用这种方法需要记住的一件事是,如果用户没有单击任何按钮来提交表单,那么您根本不会在输入中获得提交按钮的任何值。例如,如果用户点击输入文本输入,则会发生这种情况。你需要处理这个案子。

您需要记住的另一件事是<button>标记。通过将其类型设置为提交,可以将此标记用作提交按钮,然后根据规范,它应该像输入类型=提交按钮一样运行。按钮可以具有比简单输入提交更丰富的内容,并且它可以具有独立于其内容的值。该值是用户单击按钮时应回发到服务器的值。

<button type="submit" name="myButton" value="1"><img src="button1.png" alt="Button 1" /></button>
<button type="submit" name="myButton" value="2"><img src="button2.png" alt="Button 2" /></button>

<?php echo ($_POST ['mybutton']); ?>

<button type="submit" name="myButton1" value="The value is not relevant in this case"><img src="button1.png" alt="Button 1" /></button>
<button type="submit" name="myButton2" value="The value is not relevant in this case"><img src="button2.png" alt="Button 2" /></button>

<?php echo (isset ($_POST ['myButton1'])? 'Button 1 was clicked': ''); ?>
<?php echo (isset ($_POST ['myButton2'])? 'Button 2 was clicked': ''); ?>

但是,Internet Explorer 7通过提交单击按钮的内容而不是单击按钮的值来对此进行控制。

这是IE7的一个大问题,但至少有一个你可以通过使用“所有提交按钮有不同的名称”技术来解决这个问题。

但是,如果你使用的是IE6,事情就会变得更糟。因为当您提交带有按钮的表单时,每个按钮的值都会被提交!这使得基本上无法确定IE6的用户点击了哪个按钮。在这种情况下,您唯一的办法就是检测是否随表单提交了多个提交按钮,如果是,则优先失败。

因此,如果您需要支持IE6,则无法使用按钮标记。

希望这有帮助。