如何在客户端验证所有的必填项都填写了(必填项有一部分是根据用户输入的数据动态生成的).在这种情况下,我要在提交的时候验证是否全部的必填项都填了.在服务器上验证的写好了,现在要搬到客户端来验证,请问用什么办法比较好.本来想用javascript的,但是这样一来我就跳不到下一个页面了.怎么解决.代码如下: private void Page_Load(object sender, System.EventArgs e)
{
// Put user code to initialize the page here
btnext.Attributes.Add("onclick","javascript:return checkInput();");

}
private void btnext_ServerClick(object sender, System.EventArgs e)
{
if(report_name.Value.Trim()=="")
{
//check report_name is null
Response.Write("<Script Language=\"javascript\">\n");
Response.Write("alert(\"please enter a report name \")\n");
Response.Write("</Script>");
return;
} if(hasSameNode(report_name.Value.Trim()))
{
//check same report name
Response.Write("<Script Language=\"javascript\">\n");
Response.Write("alert(\"Has same report name\")\n");
Response.Write("</Script>");
return;
} if(select_field_list.Items.Count==0)
{
//check select data field
Response.Write("<Script Language=\"javascript\">\n");
Response.Write("alert(\"please a data field\")\n");
Response.Write("</Script>");
return;
} Session["report_name"]=report_name.Value.Trim();
Session["table_name"]=tbname_text.Value;
ArrayList list=new ArrayList();
for(int i=0;i<select_field_list.Items.Count;i++)
{
select_field_list.SelectedIndex=i;
list.Add(select_field_list.Value);
}
Session["field"]=list; Response.Redirect("step2.aspx");
}
<!--
// check if the information is null
function checkInput()
{
if(document.all("tbname_text").value=="")
{
alert("Please select or enter a table name!");
document.all("tbname_text").focus();
return false;
}
if(document.all("report_name").value=="")
{
alert("Please select or enter a report name!");
document.all("report_name").focus();
return false;
}
//if(document.all("select_field_list").Items.Count==0)
/*if(document.Form1.select_field_list.length==0)
{
alert("Please select a field!");
document.all("select_field_list").focus();
return false;
}
var i = document.Form1.select_field_list.length;
alert(i);*/
}
//-->
</script>
这样的话出问题了,首先是list控件怎么验证它是空的,其次是我验证好了无法执行private void btnext_ServerClick(object sender, System.EventArgs e).怎么解决这个问题.// 这个是另外一个页面的验证
private void btnext_Click(object sender, System.EventArgs e)
{
for(int i=0;i<txtlist.Count;i++)
{
TextBox tb=(TextBox)txtlist[i];
if(tb.Text=="")
{
Response.Write("<Script Language=\"javascript\">\n");
Response.Write("alert(\"please enter a headertext\")\n");
Response.Write("</Script>");
return;
}
headertextlist.Add(tb.Text);
} Session["headertext"]=headertextlist;
Response.Redirect("step3.aspx");
}
我现在都要搬到客户端怎么弄.谢谢大家,尽快回答啊

解决方案 »

  1.   

    使用验证控件<ASP:REQUIREDFIELDVALIDATOR id=RequiredFieldValidator1 runat="server" errormessage="*" controltovalidate="report_name"></ASP:REQUIREDFIELDVALIDATOR>
      

  2.   

    用了这个我动态生成的那些控件怎么办.还有,用了这个,是不是就是在客户端验证了,不用回到服务端了.我感觉他是先回服务器验证,不符合条件就返回,不执行后面的代码么.我看了页面的代码,没有找到验证的那个代码么.要不就是我不知道,请指出页面上哪部分代码是执行验证的.或者说有其他办法,比如说用javasript来实现.
      

  3.   

    动态添加输入控件和验证控件,并设置相关的属性。
    验证控件能够自动检测客户端是不是支持javascript,如果支持则自动生成客户端代码并在客户端执行验证,如果不支持验证在服务器端完成。