Web表单和桌面程序中经常要用到文本输入框, 比如登录框中的用户名和密码输入. 在Web表单中, 文本框获取焦点后(鼠标点击或者Tab键切换), 其中的文本并不会被选中. 但是有一些人会画蛇添足, 在文本框获取焦点后将其中的文本全选中, 如 PHPMyAdmin. 听到画蛇添足这个贬义词, 你就知道我是反对这种作法, 下面我要分析该作法的错误之处.
例如, 当我在某个网站的登录框中输入 ideawu2, 然后点击登录. 事实上, 我的用户名是 ideawu, 只是一时笔误. 那么当我要修改时, 我当然是直接选中2后点击键盘上的Backspace键., 或者将光标定位到该文本框最后(这种操作方式比选中单个字符更容易), 然后点击键盘上的Backspace键. 如果你自作聪明地把所有的文本选中, 那么你是想让我把所有的文本删除再重新输入一遍吗? 即使是只更改一个字符?
从理论上讲, 该作法的错误根源是: 事物的状态不是凭空产生的, 而是从一个状态到另一个状态, 而且后一个状态一般是以前一个状态为基础的改变.
我有理由相信这种愚蠢的作法源于Windows操作系统的文本框的默认行为, 这种文本框最重要地应用是资源浏览器和IE的地址栏. 在Linux操作系统下的Gnome中的文本框就不会有这种行为. 所以, 当我在Windows下使用浏览器浏览网页, 想在地址栏中输入一个新的网址时, 比如, 当前我正在浏览 http://www.ideawu.net/, 因为某种原因, 页面上并没有提供到 http://www.ideawu.net/ideablog/ 的链接, 最简便的作法是把光标定位在网址的末尾, 然后输入 ideablog 回车. 但是, 在Windows下我根本无法这样做! 无论我点住鼠标同时把鼠标上, 下, 左(至少会选中一个字符), 右移动, 都无法把光标定位在网址的末尾, 这让我很苦恼.
奇怪的是, Windows的IE使用这种文本框的默认行为, 而Firefox的Windows版本的地址栏为什么也使用这种默认行为?
我常想, 微软是不是应该改变Windows文本框的这个愚蠢的默认行为? Web开发者能不能放弃这个愚蠢的作法?