Form.disable - Prototype JavaScript 框架

Xunxin Prototype API

disable

disable(formElement) -> HTMLFormElement

禁用表单中的所有控件。禁用后表单控件仍然可见,但不能再进行编辑。

表单可以在禁用和启用间进行切换。

我可以试试吗?

当然,这里有一个样例:

用户信息

按钮点击的相关代码如下:

var form = $('disable-example'); 
// 调用 form.disable() 和 form.enable() 在启用和禁用间进行切换
form[form.disabled ? 'enable' : 'disable'](); 
form.disabled = !form.disabled;

译注:上面这段代码看起来有些奇怪。或许你会发现删除 form[form.disabled ? 'enable' : 'disable'](); 这一句后,代码运行的结果似乎仍然是一样的。其实,这中间有一点不那么引人注目但却重要的区别:未删除那个语句之前,表单禁用后, 表单中控件的值无法再进行编辑。而删除语句后,表单禁用后,控件的值却仍然可以进行编辑,虽然它们都是灰色的——呵呵, 不要让那些表象干扰我们做出正确的判断。说了这么多,大家应该能够看出:form.disable()form.disabled = true 并不是一回事,前者是禁用表单中的控件,而后者是禁用表单。其实,看一下源码,这中间的区别就非常清楚了。
另外,form[form.disabled ? 'enable' : 'disable'](); 这种写法并不常见,会造成一些迷惑,但是想一下在 JavaScript 中, 对象的属性可以用关键字索引来进行访问,而对象的方法其实也是对象的一个属性,那么这个语句就不难理解了:
  form['disable']() ==> form.disable()
这两者是等价的。

注意

记住:在串行化时,表单中被禁用的控件将会被忽略!不能够串行化一个已禁用的表单。