手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜的Vultr , 注册 | 登陆
浏览模式: 标准 | 列表Tag:jquery

表单提交按钮input和button的取舍

这篇文章我一直在纠结,是否要摘录过来,但我还是最终决定放上来了。
其实大家都知道,在网页中,可见的按钮有三种,一种是input,一种是button,最后一种,其实也不能管是按钮,它是由img转化而来的。最最常用的还是input和button,在以前的日子里,大家都习惯于用input,因为他直接拥有type=submit,而button没有,它更适合于表达button。
然而。。。

XML/HTML代码
  1. 首先,在IE6里,如果一个表单里有多个button形式的提交按钮,那么不管你点击其中哪个按钮,所有的button按钮都会被提交,而在IE7,8里则点击哪个按钮,才提交哪个button按钮。此时,如果想在服务端判断用户点击了哪个按钮,只能使用Javascript来处理。  

这点,在不同浏览器对回车提交表单的处理办法已经提过,但老王说的这个是变量的传递,以及在指定name的时候,POST变量的值的变化。不废话看原文:
最近写代码,处理很多表单,里面的Submit按钮有两种形式,分别是input和button,有点区别,做个试验:

先创建一个php文件demo.php, 用来接收表单数据:

<?php
var_dump($_POST);
?>

再创建一个html文件demo.html, 用来显示表单:

<form method="post" action="demo.php">
<input type="submit" name="foo" value="提交">
<input type="submit" name="bar" value="保存">
</form>

<form method="post" action="demo.php">
<button type="submit" name="foo" value="foo_value">提交</button>
<button type="submit" name="bar" value="bar_value">保存</button>
</form>

使用Firefox依次浏览,就能看到input和button的区别:input提交按钮显示的文字就是value,而button提交按钮显示的文字 和value是独立的,从这个意义上来看,button更有表现力,是更值得推荐的提交按钮实现方式。

可惜IE总是拖后腿,使用IETester里的 IE6,7,8分别浏览,就会发现button提交按钮在IE下有Bug:

首先,在IE6里,如果一个表单里有多个button形式的提交按钮,那么不管你点击其中哪个按钮,所有的button按钮都会被提交,而在IE7,8里 则点击哪个按钮,才提交哪个button按钮。此时,如果想在服务端判断用户点击了哪个按钮,只能使用Javascript来 处理。

另外,在IE6,7,8里,button形式的按钮在提交后,value属性都失效了,显示文字取代了value。

总结:从理论上来看,button形式的提交按钮优于input形式的提交按钮。但如果考虑浏览器通用性,很多时候还是只能使用input形式的提交按 钮。

参考:http://www.w3.org/TR/html401/interact/forms.html
老王的文章在:表 单提交按钮input和button的取舍

Tags: form, input, button

【转】人均收入应该怎么算

看到这篇文章,我还是觉得上海人均年收入21.9万算是低的了。怎么着也应该人均百万吧?

智联招聘的统计数据:上海人均年收入 21.7万(详见下面的图片)
已知:操作工2万1,初级专员3万8,专员6万8,主管12万,经理21万,总监38万,高管68万
现在出个题,人均收入应该怎么算?

请看专业计算求解过程:

根据各种职位人口比例1:1:1:1:1:1:1
得 =>  (2.1+3.8+6.8+12+21+38+68) / 7=21.7w

问:你服不服?
大小: 205.71 K
尺寸: 363 x 376
浏览: 1447 次
点击打开新窗口浏览全图

原文来自yhustc的QQ博客,不方便透露他的QQ号,怕一些暗恋他的MM冲过去频加好友,想了想,还是透露一下他的博客地址吧:http://yhustc.com

Tags: 人均收入

知识:代理(Proxy)和委派(Delegate)的区别

说实话,如果不是必要,真不是特别推荐采用proxy方法。特别是在PHP中,采用proxy势必会造成include文件过多。IO的消耗非常恐怖,如果又采用openbasedir,那么还要恐怖 。性能会下降的很厉害。。。

下面是老王的文章:

模式是程序员之间的交流语言,代理(Proxy)和委派(Delegate)是模式中常见的词汇,不过很多人把他们混淆了,甚至等同起来,这会造成很多沟通交流上的误解,下面说说他们的区别,先看一个UML图:



图形已经表述的很直白了,如果还不清晰,可以看看下面的代码:

PHP代码
  1. interface Subject  
  2. {  
  3.     public function DoAction();  
  4. }  
  5.   
  6. class RealSubject implements Subject  
  7. {  
  8.     public function DoAction()  
  9.     {  
  10.         echo '_RealSubject::DoAction_';  
  11.     }  
  12. }  
  13.   
  14. class Proxy implements Subject  
  15. {  
  16.     public function __construct()  
  17.     {  
  18.         $this->subject = new RealSubject();  
  19.     }  
  20.   
  21.     public function DoAction()  
  22.     {  
  23.         echo 'Proxy::DoAction';  
  24.         $this->subject->DoAction();  
  25.         echo 'Proxy::DoAction';  
  26.     }  
  27. }  
  28.   
  29. $proxy = new Proxy();  
  30. $proxy->DoAction();  


运行结果输出:Proxy::DoAction_RealSubject::DoAction_Proxy::DoAction

如果你还没有看出端倪,我就再废话几句:首先从词性来看,代理(Proxy)是名词,委派(Delegate)是动词,其次代理说明了若干个对象实现了一个共同的接口,而委派只是说明一个对象引用了另一个对象,并不牵扯接口。

既然说到这了,就再唠叨几句:什么时候适合使用Proxy模式呢?对PHP而言,一般是当需要给对象附加额外的逻辑时,而这些逻辑和原有逻辑又分属不同的 层次,此时就可以考虑使用Proxy模式。听起来有点拗口,说一个实际的例子,比如说我们实现了Article对象,里面封装了CRUD方法,现在我们要 加入权限判断,控制CRUD的访问限制,这些新加入的逻辑属于应用逻辑,而原有的逻辑属于持久化逻辑,从分层角度看它们不应该放在一个对象里,此时就可以 创建一个ArticleProxy代理对象,用来实现权限判断,至于CRUD操作,则通过委派给Article对象来完成。

当年的JIVE论坛大量使用了此类方法,不过现在JIVE论坛早已销声匿迹,但思想还是可以借鉴的。通过使用代理模式,可以把不同侧重点的逻辑分别封装到 不同的对象里去(和装饰模式有点像,至于如何区分就是另一个话题了),从而避免God Class的产生,不过这样设计的结果会产生大量的类,孰重孰轻还得视客观情况而定。
原文来自:http://hi.baidu.com/thinkinginlamp/blog/item/2297a7efcb52a31afdfa3cc2.html
老王一天到晚在研究新奇玩意,上次说在PC下安装object-C,也是我挺喜欢的。

 

Tags: proxy, delegate

网络有时候会突然断掉,可能是ARP?

目前还不知道为什么,只是这两天访问可能会有点问题。请大家谅解。
已经联系机房在查原因了。一两天内可以解决这个问题。
希望不是ARP吧。否则就需要一一做IP/MAC绑定。有点烦。

根据日期获得当天是星期几?

读书的时候,偶尔也和同学们玩过xxx号是星期几的游戏。但那也是十几年前的事情了。
如今在程序时代,什么都用程序来解决。那当然是很方便的。因此,你问我2003年10月1日是星期几,我很可能就会直接用程序来告诉你。

PHP代码
  1. <?php  
  2. echo date('w',strtotime('2003-10-1'));  

但事实上,我们也都知道,PHP的date函数是有时间范围区间的,即只能从1970~2038年,因此在这个区间范围之外的算法都是不准的。那倒底怎么算呢?其实是有一个公式的:

蔡勒(Zeller)公式:w=y+[y/4]+[c/4]-2c+[26(m+1)/10]+d-1

公 式中的符号含义如下,w:星期;c:世纪-1;y:年(两位数);m:月(m大于等于3,小于等于14,即在蔡勒公式中,某年的1、2月要看作上一年的 13、14月来计算,比如2003年1月1日要看作2002年的13月1日来计算);d:日;[ ]代表取整,即只要整数部分。(C是世纪数减一,y是年份后两位,M是月份,d是日数。1月和2月要按上一年的13月和 14月来算,这时C和y均按上一年取值。)

算出来的W除以7,余数是几就是星期几。如果余数是0,则为星期日。

以2049年10月1日(100周年国庆)为例,用蔡勒(Zeller)公式进行计算,过程如下:
蔡勒(Zeller)公式:w=y+[y/4]+[c/4]-2c+[26(m+1)/10]+d-1
=49+[49/4]+[20/4]-2×20+[26× (10+1)/10]+1-1
=49+[12.25]+5-40+[28.6]
=49+12+5-40+28
=54 (除以7余5)
即2049年10月1日(100周年国庆)是星期5。

你的生日(出生时、今年、明年)是星期几?不妨试一试。

--EOF--

上面的公式和部分内容来自于http://www.cnblogs.com/chingho/archive/2010/03/26/1697282.html,只要有公式,什么都可以解决。