如何清空Form内输入框、下拉框的内容或还原为默认值?

时间:2022-07-25 08:06:02
我写了一下代码,可是说脚本错误,好像没有什么错误啊?
<script language="javascript">
function resetvalue()
{
if (document.all("Keywords") != null) document.all("Keywords").value="";
if (document.all("FromDate") != null) document.all("FromData").value="";
if (document.all("EndDate") != null) document.all("EndDate").value="";
if (document.all("dlCategory") != null) document.all("dlCategory").item( 0 ).selected = true;
if (document.all("dlApproval") != null) document.all("dlApproval").item( 0 ).selected = true;
if (document.all("dlDocStatus") != null) document.all("dlDocStatus").item( 0 ).selected = true;
if (document.all("xdlAddByxx") != null) document.all("dlAddBy").item( 0 ).selected = true;
if (document.all("dlEditor") != null) document.all("dlEditor").item( 0 ).selected = true;
if (document.all("dlNewsTarget") != null) document.all("dlNewsTarget").item( 0 ).selected = true;
}
</script>

12 个解决方案

#1


document.formName.reset()

#2


window.location.reload();

#3


两种方法都有不好的地方,这个东东是用一个ASP.net页面上面的,用清空搜索条件,把条件都重置到页面刚好LOAD出来的时候的状态

document.formName.reset()
这个方法只能够在第一次的时候起作用,当搜索之后这个Reset键就失效了

window.location.reload();
这个会造成整个页面Reload,并不需要这么做吧,会加重服务器负担,这个功能在客户端完成就行了。

#4


reset就是恢复默认值

#5


提示是么错误呀?

#6


在ASP.NET里用 reset() reload() 都是起不到效果的, 因为页面postBack之后, 所有的表单项默认值都已经变了, 解决的办法就是: window.location.href = "aa.aspx"; //这样就可以加载到最初始的状态了.

#7


可是使用window.location.href = "aa.aspx"; 之后依然会使用到服务器资源哦,这种事情其实在客户端就可以完成了吧……

#8


/**
* This function is to clear a form (or a container of implements such as table,tr ..).
* JK 
* formObj:the checked form
* exceptObjName:the name of whitch need not be checked;
* For example:clearForm(document.frm,"ACheckbox,BRadio,CSelect");
*/
function clearForm(formObj,exceptObjName)
{
if(formObj==null) formObj=document.forms[0];
if(exceptObjName==null) exceptObjName=="";
var selectObjs=formObj.getElementsByTagName("SELECT");//For Select Obj
for(var i=0;i<selectObjs.length;i++)
{
if((selectObjs[i].name=="")||(eval("/(^|,)"+selectObjs[i].name+"(,|$)/g").test(exceptObjName))) continue;
selectObjs[i].value="";
}

var inputObjs=formObj.getElementsByTagName("INPUT");//For Input Obj
for(var i=0;i<inputObjs.length;i++)
{
if((inputObjs[i].name=="")||(eval("/(^|,)"+inputObjs[i].name+"(,|$)/g").test(exceptObjName))) continue;
if(inputObjs[i].type.toUpperCase()=="TEXT")  inputObjs[i].value="";
else if((inputObjs[i].type.toUpperCase()=="RADIO")||(inputObjs[i].type.toUpperCase()=="CHECKBOX"))
inputObjs[i].checked=false;

}

var textareaObjs=formObj.getElementsByTagName("TEXTAREA");//For textarea Obj
for(var i=0;i<textareaObjs.length;i++)
{
if((textareaObjs[i].name=="")||(eval("/(^|,)"+textareaObjs[i].name+"(,|$)/g").test(exceptObjName))) continue;
textareaObjs[i].value="";
}
}

#9


如果非要在客户端做,那你手工对每个框进行更新就可以~~

document.getElementById("name").value = "";
document.getElementById("select").options[0].selected = true;

当然写个程序遍历表单中所有的INPUT和SELECT都这样设置,比一个一个手工做简单~~~呵呵,多写两行代码的事情~~~

#10


JK_10000(JK)  的函数是一棒子全打死, 万一它页面初始时比如多选框是选中的等, 全被你做掉了

#11


"JK_10000(JK)  的函数是一棒子全打死"

----
冤枉啊!
没有一棒子打死呢
还给它留了个出气的地方:第二个参数exceptObjName就是让使用者设置不处理的对象,
如果发生了“万一它页面初始时比如多选框是选中的”
那就这样调用:clearForm(document.formObj,"ASelect");

#12


呵呵,还有活口 :)

#1


document.formName.reset()

#2


window.location.reload();

#3


两种方法都有不好的地方,这个东东是用一个ASP.net页面上面的,用清空搜索条件,把条件都重置到页面刚好LOAD出来的时候的状态

document.formName.reset()
这个方法只能够在第一次的时候起作用,当搜索之后这个Reset键就失效了

window.location.reload();
这个会造成整个页面Reload,并不需要这么做吧,会加重服务器负担,这个功能在客户端完成就行了。

#4


reset就是恢复默认值

#5


提示是么错误呀?

#6


在ASP.NET里用 reset() reload() 都是起不到效果的, 因为页面postBack之后, 所有的表单项默认值都已经变了, 解决的办法就是: window.location.href = "aa.aspx"; //这样就可以加载到最初始的状态了.

#7


可是使用window.location.href = "aa.aspx"; 之后依然会使用到服务器资源哦,这种事情其实在客户端就可以完成了吧……

#8


/**
* This function is to clear a form (or a container of implements such as table,tr ..).
* JK 
* formObj:the checked form
* exceptObjName:the name of whitch need not be checked;
* For example:clearForm(document.frm,"ACheckbox,BRadio,CSelect");
*/
function clearForm(formObj,exceptObjName)
{
if(formObj==null) formObj=document.forms[0];
if(exceptObjName==null) exceptObjName=="";
var selectObjs=formObj.getElementsByTagName("SELECT");//For Select Obj
for(var i=0;i<selectObjs.length;i++)
{
if((selectObjs[i].name=="")||(eval("/(^|,)"+selectObjs[i].name+"(,|$)/g").test(exceptObjName))) continue;
selectObjs[i].value="";
}

var inputObjs=formObj.getElementsByTagName("INPUT");//For Input Obj
for(var i=0;i<inputObjs.length;i++)
{
if((inputObjs[i].name=="")||(eval("/(^|,)"+inputObjs[i].name+"(,|$)/g").test(exceptObjName))) continue;
if(inputObjs[i].type.toUpperCase()=="TEXT")  inputObjs[i].value="";
else if((inputObjs[i].type.toUpperCase()=="RADIO")||(inputObjs[i].type.toUpperCase()=="CHECKBOX"))
inputObjs[i].checked=false;

}

var textareaObjs=formObj.getElementsByTagName("TEXTAREA");//For textarea Obj
for(var i=0;i<textareaObjs.length;i++)
{
if((textareaObjs[i].name=="")||(eval("/(^|,)"+textareaObjs[i].name+"(,|$)/g").test(exceptObjName))) continue;
textareaObjs[i].value="";
}
}

#9


如果非要在客户端做,那你手工对每个框进行更新就可以~~

document.getElementById("name").value = "";
document.getElementById("select").options[0].selected = true;

当然写个程序遍历表单中所有的INPUT和SELECT都这样设置,比一个一个手工做简单~~~呵呵,多写两行代码的事情~~~

#10


JK_10000(JK)  的函数是一棒子全打死, 万一它页面初始时比如多选框是选中的等, 全被你做掉了

#11


"JK_10000(JK)  的函数是一棒子全打死"

----
冤枉啊!
没有一棒子打死呢
还给它留了个出气的地方:第二个参数exceptObjName就是让使用者设置不处理的对象,
如果发生了“万一它页面初始时比如多选框是选中的”
那就这样调用:clearForm(document.formObj,"ASelect");

#12


呵呵,还有活口 :)