【原】display:none 和visible:false 的区别

今天遇到一个需求,把原先表单上需要输入的一个项隐藏起来,考虑有2种方法:

首先说一下页面布局,这个输入项是一个TextBox,放在一个Table里的一个TR下的TD里,所以可以对TR进行隐藏

一种:把TR的display改为none

另外一种:把TR的visible改为false

经过测试,2种方法都可以隐藏里面的控件,但是稍有区别:

像大多数网上其他文章说的那样,第一种仅仅是隐藏了控件,但是html代码依然生成,也就是我里面的textBox还是会生成input控件,而第二种就直接不生成html控件了。

看到这里还没完,也许你会觉得以后遇到这个需求,采用那一种方法都没问题,但是我这里比较特殊,我的TextBox后面还有个验证控件,这个控件是原来用来验证用户必须输入这个项目的。现在如果采用第一种方法,会有这个问题:

画面上看不到输入项,但是点击确定按钮始终看不到页面提交。

产生这个问题的原因是:该验证控件并没有消失,只是被强制不显示了,导致用户也不知道哪里出了问题。

如果采用第二种方法,就不存在这个问题,因为在html代码里根本没有产生这个验证控件,所以仍然是可以提交页面的。

综上所述,如果你的代码中存在验证控件,建议还是采用第二种方法,除非你愿意频繁修改你的代码结构。

原文地址:https://www.cnblogs.com/wbpmrck/p/1753783.html