大家在做用户信息注册的时候,想必当注册信息错误的时候会有清除所有填写的信息,让注册者重新填写的一种可能。而这个清除用户input内容的功能如何实现呢?
今天我就来分享分享。
首先:使用最原始最简单的C#后台代码来实现
1. 清除界面上所有textbox的text内容
细想一下它无非就是遍历界面上的所有控件,如果是textbox则清除它的text内容。
具体实现方法见下:
foreach(control co in panel1.Controls) { if(co.getType()=="textBox") { co.text ="" } }
这种方法是错误的,无法调用text属性。
正确的方法应该是:
public void ClearPanel1() { FieldInfo[] infos = GetType().GetFields(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.GetField | BindingFlags.Instance); for (int i = 0; i < infos.Length; i++) { if (infos[i].FieldType == typeof(TextBox)) { ((TextBox)infos[i].GetValue(this)).Text = ""; } } }
这是采用C#后台代码来实现清空textbox的text内容。这样写会给服务器带来很大的负担,为什么不写到客户端呢?
下面是采用客户端来实现的:
function ClearAllText(){ var TextBox = document.getElementsByTagName("INPUT"); for(var Count=0;Count<TextBox.length;Count++) { if(TextBox[Count].type.toUpperCase() == "TEXT") { TextBox[Count].value = ""; } }
此方法是清除界面上所有的textbox内容。
而下面一种则是我认为比较好的一种,通过<div>将页面快包起来,当需要清除的时候清除<div>中的textbox的text内容就可以了,如此这不会清空整个页面的。
具体实现方法如下:
<script type="text/javascript"> function $(id) { return document.getElementById(id); } function ClearText() { var nodes = $("DivPanel1").childNodes; for (var i = 0; i < nodes.lengeth; i++) { if (nodes[i].type.toUpperCase()=="TEXT") { nodes[i].value = ""; } } } </script>