2012-03-29 136 views
2

我希望能够从一个按钮尽可能多的属性显示,因为我可以。PHP的HTML显示按钮的属性

按钮:

<input name="Accept" type="submit" class="button" id="Accept" value="Accept" /> 

按钮代码:

if(isset($_POST['Accept'])){ 
//show button properties here 
} 

我想它显示在按钮按下什么:

  • 名称:接受
  • 类型:提交
  • 类:按钮
  • ID:接受
  • 值:接受

和什么别的永远可以显示

谢谢你在先进。

+0

我知道你可能无法显示所有内容,但我希望能够尽可能多地显示 – 2012-03-29 23:43:34

+1

这是什么情况?发布时,只会发送输入元素的名称和值。 – F21 2012-03-29 23:46:33

+1

传回的唯一数据是名称和值对。除非你愿意使用JavaScript。 – 2012-03-29 23:47:40

回答

1

如何通过普通的HTML行为获取HTML元素的属性没有办法 - 但是您可以使用处理“onSubmit”表单事件的JavaScript函数,通过它可以发送所有您需要的东西。

+0

好的谢谢。这样的事情如何... name =“save [11798779]” 我怎样才能得到这个数字? – 2012-03-29 23:54:21

+0

当然,$ _POST将包含键'save',该键是包含原始HTML元素值的键'11798779'的数组。 – 2012-03-29 23:57:20

+0

如何获得该号码? – 2012-03-29 23:59:11

2

一种可能的方式,不使用JavaScript将数据副本存储在元素的名称:

<input name="Accept" type="submit" class="button" id="Accept" value="Accept" /> 

变为:

<input name="Accept.submit.button.Accept" type="submit" class="button" id="Accept" value="Accept" /> 

您可以得到value$_POST数组。对于其余的属性,只需使用explode()来分割元素的键。

+1

好主意。谢谢。 – 2012-03-29 23:58:10

1

除了名称和值之外,没有办法提交输入的属性,但是您可以使用任何想要的信息在表单上隐藏输入,甚至可以创建它们或动态地将它们填充到按钮的onclick中或表单的提交事件。

作为另一种选择,我会填充JSON形式的按钮值中的信息,因为按钮的值通常无用。

如果你真的想出了想法,那么你可以在表单的action属性中将url信息填入url的查询字符串中,然后通过检查GET数组来获取信息(但是如果表单方法是取而代之的是,然后这些值可能会被覆盖!)

但是,如果你只是需要一种方法来区分许多按钮,那么每个人都有不同的名称或值,这可能是按钮具有名称和值的唯一原因。


关于andrejd的回答,请注意,虽然你可以使用的onsubmit功能与阿贾克斯提交,然后返回false取消默认提交,请注意,使用这种方法存在以下问题:

1 )onSubmit函数不知道哪个按钮被按下了,但是你可以使用按钮的onClick事件,但是你必须绑定到表单上的每个提交按钮(你可以用jquery等来更容易地做到这一点)。

2)由于Ajax不会影响页面内容,因此ypu会自行刷新它或自行导航页面,后者可以使用“location.href”

3)如果你正在提交文件,你将很难用ajax做这件事,你可以尝试使用jquery fileupload插件。

4)Ajax被限制在同一个源(tgat表单提交不是),你可以尝试使用JSONP解决方法。

5)如果客户端没有JavaScript(比如一些手机或者某些文本浏览器,比如linux浏览器),或者禁用了JavaScript或者使用了较老的浏览器,Ajax将不起作用,并且通常不会建议完全依赖Ajax,但至少应该为这些情况提供一种替代方案。


对于问题2-4,你可以通过让Ajax只是额外的内容来解决它们,然后返回true以让默认提交提交表单。

+1

另一个好主意,谢谢。 – 2012-03-29 23:59:50

+0

这是在无状态HTTP中执行这些事情的标准方式,这是首先存在隐藏输入的原因。 – 2012-03-30 00:04:00

+0

事实上,ASP.Net在幕后几乎完全基于这个想法,使用视图状态输入 – 2012-03-30 00:10:08