表单的提交是依据用户是否点下submit按钮或其它方式法发onsubmit事件来提交的,如果onsubmit事件的绑定函数的返回逻辑值为false则不提交,其它则提交,void值也会被提交,你这里建议写作
<form ... onsubmit="CheckRegister(this)"..把form对象直接传给CheckRegister方法里,可以省点事
然后CheckRegister方法里这么样写
function CheckRegister(frm)
{
   if(frm.txtUserName.length == 0)
   {
      return alert("请输入用户名!"),false;//此句表示先弹出对话框后返回false,逗号运算符,从左向右运行,取右边的值,而alert运行时会阻塞页面内的脚本运行.
   }
}

解决方案 »

  1.   

    <script language="javascript">
    function CheckRegister(frm)
    {
    if (frm.txtUserName.value.length == 0) return alert("!!!"),false;
    }
    </script>
    <FORM METHOD=POST ACTION="aaa" onsubmit="return CheckRegister(this)">
    <input type="text" name="txtUserName" />
    <input type="submit" value="ok"/>
    </FORM>汗....大意了,我忘了写return了,这里这么样写onsubmit="return CheckRegister(this)"
      

  2.   

    谢谢! 我还有一个问题!如果我的这个javascript函数是写在Asp.net里面.怎么调用呢?
    并且我还想让这个文本框得到焦点.
    代码如下:
    <%@ Page language="c#" Codebehind="Register.aspx.cs" AutoEventWireup="false" Inherits="Registration.WebForm1" %>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
    <HTML>
      <HEAD>
    <title>Register</title>
    <meta content="Microsoft Visual Studio .NET 7.1" name=GENERATOR>
    <meta content=C# name=CODE_LANGUAGE>
    <meta content=JavaScript name=vs_defaultClientScript>
    <meta content=http://schemas.microsoft.com/intellisense/ie5 name=vs_targetSchema>
    <script language=javascript>
    function CheckRegister()
    {
    var username=document.Form1.txtUsername;
    var pass1=document.Form1.txtPassword;
    var pass2=document.Form1.txtPwd;
    var name=document.Form1.txtName;
    var email=document.Form1.txtEmail;
    var addr=document.Form1.txtAddress;
    var handno=document.Form1.txtHandsetNo;          
    if(username.value=="")
    {
    alert("用户名不能为空!");
    username.focus();
    return false;
    }
    if(name.value=="")
    {
    alert("联系人不能为空!");
    name.focus();
    return false;
    }
    if(handno.length==0)
    {
    alert("常用号码不能为空!");
    handno.focus();
    return false;
    }
    if(addr.value=="")
    {
    alert("地址不能为空!");
    addr.focus();
    return false;
    }
    if(email.length==0)
    {
    alert("Email不能为空!");
    email.focus();
    return false;
    }
    if(email.indexOf("@",0)==-1)
    {
    alert("Email格式不正确!\n必须包含@符号!");
    email.focus();
    return false;
    }
    if(email.indexOf(".",0)==-1)
    {
    alert("Email格式不正确!\n必须包含.符号!");
    email.focus();
    return false;
    }
    if(pass1==pass2)
    {
    if(pass1.length!=0)
    {
    return true;
    }
    else
    {
    alert("维护密码不能为空!");
    pass1.focus();
    return false;
    }
    }
    else
    {
    alert("确认密码必须与维护密码相同!");
    pass2.focus();
    return false;
    }
    }
    </script>
    </HEAD>
    <body MS_POSITIONING="GridLayout">
    <form id=Form1 method=post runat="server">
    <FONT face=宋体>
    <asp:label id=lblUserName style="Z-INDEX: 101; LEFT: 24px; POSITION: absolute; TOP: 56px" runat="server" Width="99px">用户名:</asp:label>
    <asp:label id=lblPassword style="Z-INDEX: 102; LEFT: 24px; POSITION: absolute; TOP: 96px" runat="server" Width="99px">维护密码:</asp:label>
    <asp:label id=lblName style="Z-INDEX: 103; LEFT: 24px; POSITION: absolute; TOP: 136px" runat="server" Width="99px">联系人:</asp:label>
    <asp:label id=lblQQNumber style="Z-INDEX: 104; LEFT: 24px; POSITION: absolute; TOP: 184px" runat="server" Width="99px">QQ号码:</asp:label>
    <asp:label id=lblPostalcode style="Z-INDEX: 105; LEFT: 24px; POSITION: absolute; TOP: 224px" runat="server" Width="99px">邮政编码:</asp:label>
    <asp:label id=lblEmail style="Z-INDEX: 106; LEFT: 360px; POSITION: absolute; TOP: 48px" runat="server" Width="72px">Email:</asp:label>
    <asp:label id=lblPwd style="Z-INDEX: 107; LEFT: 360px; POSITION: absolute; TOP: 96px" runat="server" Width="72px">确认密码:</asp:label>
    <asp:label id=lblHandsetNo style="Z-INDEX: 108; LEFT: 360px; POSITION: absolute; TOP: 144px" runat="server" Width="72px">常用号码:</asp:label>
    <asp:label id=lblHandsetNumber style="Z-INDEX: 109; LEFT: 360px; POSITION: absolute; TOP: 184px" runat="server" Width="72px">手机号码:</asp:label>
    <asp:label id=lblAddress style="Z-INDEX: 110; LEFT: 360px; POSITION: absolute; TOP: 232px" runat="server" Width="72px">地址:</asp:label>
    <asp:textbox id=txtUsername style="Z-INDEX: 111; LEFT: 128px; POSITION: absolute; TOP: 48px" runat="server" Width="181px"></asp:textbox>
    <asp:textbox id=txtPassword style="Z-INDEX: 112; LEFT: 128px; POSITION: absolute; TOP: 96px" runat="server" Width="181px"></asp:textbox>
    <asp:textbox id=txtName style="Z-INDEX: 113; LEFT: 128px; POSITION: absolute; TOP: 136px" runat="server" Width="181px"></asp:textbox>
    <asp:textbox id=txtQQNumber style="Z-INDEX: 114; LEFT: 128px; POSITION: absolute; TOP: 184px" runat="server" Width="181px"></asp:textbox>
    <asp:textbox id=txtPostalcode style="Z-INDEX: 115; LEFT: 128px; POSITION: absolute; TOP: 224px" runat="server" Width="181px"></asp:textbox>
    <asp:textbox id=txtEmail style="Z-INDEX: 116; LEFT: 440px; POSITION: absolute; TOP: 48px" runat="server"></asp:textbox>
    <asp:textbox id=txtPwd style="Z-INDEX: 117; LEFT: 440px; POSITION: absolute; TOP: 96px" runat="server"></asp:textbox>
    <asp:textbox onkeypress="if(event.keyCode < 49 || event.keyCode > 58) event.returnValue = false;" id=txtHandsetNo style="Z-INDEX: 118; LEFT: 440px; POSITION: absolute; TOP: 136px" runat="server"></asp:textbox>
    <asp:textbox id=txtHandsetNumber style="Z-INDEX: 119; LEFT: 440px; POSITION: absolute; TOP: 184px" runat="server"></asp:textbox>
    <asp:textbox id=txtAddress style="Z-INDEX: 120; LEFT: 440px; POSITION: absolute; TOP: 224px" runat="server" Width="256px"></asp:textbox>
    <asp:button id=btnSubmit style="Z-INDEX: 121; LEFT: 288px; POSITION: absolute; TOP: 272px" runat="server" Text="提交并注册"></asp:button>
    <asp:label id=Label11 style="Z-INDEX: 122; LEFT: 312px; POSITION: absolute; TOP: 56px" runat="server" ForeColor="Red">*</asp:label>
    <asp:label id=Label12 style="Z-INDEX: 123; LEFT: 312px; POSITION: absolute; TOP: 104px" runat="server" ForeColor="Red">*</asp:label>
    <asp:label id=Label13 style="Z-INDEX: 124; LEFT: 312px; POSITION: absolute; TOP: 144px" runat="server" ForeColor="Red">*</asp:label>
    <asp:label id=Label16 style="Z-INDEX: 127; LEFT: 600px; POSITION: absolute; TOP: 56px" runat="server" ForeColor="Red">*</asp:label>
    <asp:label id=Label17 style="Z-INDEX: 128; LEFT: 600px; POSITION: absolute; TOP: 104px" runat="server" ForeColor="Red">*</asp:label>
    <asp:label id=Label18 style="Z-INDEX: 129; LEFT: 600px; POSITION: absolute; TOP: 144px" runat="server" ForeColor="Red">*</asp:label>
    <asp:label id=Label20 style="Z-INDEX: 131; LEFT: 704px; POSITION: absolute; TOP: 232px" runat="server" ForeColor="Red">*</asp:label></FONT></FORM>
    </body>
    </HTML>
      

  3.   

    上面的这个是我的aspx注册页面的html源.我的这个javascript函数写了.想让注册页面的内容在客户端验证,如果验证成功就提交到服务器.可现在不能验证.而且我已在aspx.cs注册页面上加载了这个javascript函数了.如下:using System;
    using System.Collections;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Web;
    using System.Web.SessionState;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.HtmlControls;namespace Registration
    {
    /// <summary>
    /// WebForm1 的摘要说明。
    /// </summary>
    public class WebForm1 : System.Web.UI.Page
    {
    protected System.Web.UI.WebControls.TextBox txtUsername;
    protected System.Web.UI.WebControls.TextBox txtPassword;
    protected System.Web.UI.WebControls.TextBox txtName;
    protected System.Web.UI.WebControls.TextBox txtQQNumber;
    protected System.Web.UI.WebControls.TextBox txtPostalcode;
    protected System.Web.UI.WebControls.TextBox txtEmail;
    protected System.Web.UI.WebControls.TextBox txtPwd;
    protected System.Web.UI.WebControls.TextBox txtHandsetNo;
    protected System.Web.UI.WebControls.TextBox txtHandsetNumber;
    protected System.Web.UI.WebControls.TextBox txtAddress;
    protected System.Web.UI.WebControls.Button btnSubmit;
    protected System.Web.UI.WebControls.Label Label11;
    protected System.Web.UI.WebControls.Label Label12;
    protected System.Web.UI.WebControls.Label Label13;
    protected System.Web.UI.WebControls.Label Label16;
    protected System.Web.UI.WebControls.Label Label17;
    protected System.Web.UI.WebControls.Label Label18;
    protected System.Web.UI.WebControls.Label lblUserName;
    protected System.Web.UI.WebControls.Label lblPassword;
    protected System.Web.UI.WebControls.Label lblName;
    protected System.Web.UI.WebControls.Label lblQQNumber;
    protected System.Web.UI.WebControls.Label lblPostalcode;
    protected System.Web.UI.WebControls.Label lblEmail;
    protected System.Web.UI.WebControls.Label lblPwd;
    protected System.Web.UI.WebControls.Label lblHandsetNo;
    protected System.Web.UI.WebControls.Label lblHandsetNumber;
    protected System.Web.UI.WebControls.Label lblAddress;
    protected System.Web.UI.WebControls.Label Label20;

    private void Page_Load(object sender, System.EventArgs e)
    {

    } #region Web 窗体设计器生成的代码
    override protected void OnInit(EventArgs e)
    {
    //
    // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
    //
    InitializeComponent();
    base.OnInit(e);
    }

    /// <summary>
    /// 设计器支持所需的方法 - 不要使用代码编辑器修改
    /// 此方法的内容。
    /// </summary>
    private void InitializeComponent()
    {    
    this.btnSubmit.Click += new System.EventHandler(this.Button1_Click);
    this.Load += new System.EventHandler(this.Page_Load); }
    #endregion private void Button1_Click(object sender, System.EventArgs e)
    {
    this.btnSubmit.Attributes.Add("onclick","return                                 CheckRegiter();");
    string username=Convert.ToString                                    (this.txtUsername.Text.Trim());
    string pwd=Convert.ToString(this.txtPassword.Text.Trim                           ());
    string email=Convert.ToString(this.txtEmail.Text.Trim                           ());
    string name=Convert.ToString(this.txtName.Text.Trim                            ());
    int handno=Convert.ToInt32(this.txtHandsetNo.Text.Trim                           ());
    int qqno=Convert.ToInt32(this.txtQQNumber.Text.Trim                            ());
    int handnumber=Convert.ToInt32                                  (this.txtHandsetNumber.Text.Trim());
    int post=Convert.ToInt32(this.txtPostalcode.Text.Trim                           ());
    string addr=Convert.ToString(this.txtAddress.Text.Trim                           ());
    这下面的是我调用另一个方法往数据库插入数据:
    DataAccess da=new DataAccess();
    da.getRegister                               (username,pwd,email,name,handno,qqno,handnumber,post,addr);
          }
    }
    }
      

  4.   

    不就你那个样吗?只是你的ASPX的控件,在处理后会生成标准的HTML的结果返回给用户,在这里,你把你的JS代码相应的部分作如下修改var username=document.Form1.lblUserName;
    var pass1=document.Form1.lblPassword;
    var pass2=document.Form1.lblPwd;
    var name=document.Form1.lblName;
    var email=document.Form1.lblEmail;
    var addr=document.Form1.lblAddress;
    var handno=document.Form1.lblHandsetNo;
      

  5.   

    我照做了,不行!我的控件全部都是服务器端的控件,我另外用Dreamweaver做了一个aspx页面文件.倒入asp工程里能运行,全部都是客户端控件,现在是验证的时候,如果有一个错了就要全部重填,我想的是如果有一个错的那就把光标定位到哪个控件上,其余控件上的值保留.怎么弄才能行的呢?代码如下:<%@ Page Language="c#" ContentType="text/html" ResponseEncoding="gb2312" CodeBehind="Untitled-1.aspx.cs" AutoEventWireup="false" Inherits="Registration.Untitled_1" %>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <HTML>
      <HEAD>
    <title>无标题文档</title>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    <script language="javascript">
      function  CheckRegister(frm)  
       {          
       if(frm.txtUserName.value.length  ==  0)  
                   {  
                        return  alert(  "请输入用户名!  "),false;
                        //此句表示先弹出对话框后返回false,逗号运算符,从左向右运行,取右边的值,而alert运行时会阻塞页面内的脚本运行.  
                   }    
       if(frm.txtName.value.length==0)  
       {  
    return alert("联系人不能为空!");  
    document.myform.txtName.focus();  
       }  
       if(frm.txtHandsetNo.value.length==0)  
       {  
      return alert("常用号码不能为空!");  
       document.myform.txtHandsetNo.focus();   
       }  
       if(frm.txtAddress.value.length==0)  
       {  
      return alert("地址不能为空!");  
       document.myform.txtAddress.focus();  
       }  
       if(frm.txtEmail.value.length==0)  
       {  
       return alert("Email不能为空!");  
       document.myform.txtEmail.focus();  
       }  
       if(frm.txtEmail.value.indexOf("@",0)==-1)  
       {  
       return alert("Email格式不正确!\n必须包含@符号!");  
       document.myform.txtEmail.focus();  
       }  
       if(frm.txtEmail.value.indexOf(".",0)==-1)  
       {  
       return alert("Email格式不正确!\n必须包含.符号!");  
       document.myform.txtEmail.focus();  
       }  
       if(frm.txtPassword.value.length==frm.txtPwd.value.length)  
       {  
       if(frm.txtPassword.value.length!=0)  
       {  
       return  alert("!!!!!!!!!!!!!!!!!!!");  
       }  
       else  
       {  
       return alert("维护密码不能为空!");  
       document.myform.txtPassword.focus();  
       }  
       }  
       else  
       {  
       return alert("确认密码必须与维护密码相同!");  
       document.myform.txtPwd.focus();  
       } 
       }  
    </script>
    </HEAD>
    <body>
    <form name="myform" method="post" onSubmit="return CheckRegister(this)" action="">
      <table width="597" height="219" border="1" align="center">
        <tr>
          <td width="79">用户名:</td>
          <td width="158"><input id="txtUserName" name="txtUserName" type="text" size="13">
            *</td>
          <td width="85">Email:</td>
          <td width="247"><input name="txtEmail" id="txtEmail" type="text" size="18">
          *</td>
        </tr>
        <tr>
          <td>维护密码:</td>
          <td><input name="txtPassword" type="text" size="18">
          *</td>
          <td>确认密码:</td>
          <td><input name="txtPwd" type="text" size="18">
          *</td>
        </tr>
        <tr>
          <td>联系人:</td>
          <td><input name="txtName" type="text" size="18">
          *</td>
          <td>常用号码:</td>
          <td><input name="txtHandsetNo" type="text" size="18">
          *</td>
        </tr>
        <tr>
          <td>QQ号码:</td>
          <td><input name="txtQQNumber" type="text" size="18"></td>
          <td>手机号码:</td>
          <td><input name="txtHandsetNumber" type="text" size="18"></td>
        </tr>
        <tr>
          <td>邮政编码:</td>
          <td><input name="txtPostalcode" type="text" size="18"></td>
          <td>联系地址:</td>
          <td><input name="txtAddress" type="text" size="25">
          *</td>
        </tr>
        <tr>
          <td>&nbsp;</td>
          <td><input type="submit" name="btnSubmit" value="提交并注册" id=Submit1 runat="server"></td>
          <td>&nbsp;</td>
          <td>&nbsp;</td>
        </tr>
      </table>
    </form>
    </body>
    </HTML>
      

  6.   

    用这个不能把光标定位到我需要的哪个控件上吗? document.myform.txtPassword.focus();  
    怎么样才能做到呢???谢谢你帮助我!!!
      

  7.   

    汗,首先你打开那个ASPX的页面,浏览一下,然后看看HTML源码,看它生成的HTML代码是怎么样的,不管你后台的代码是怎么样的,它始终都要生成标准的HTML代码让浏览器来解释,然后再改一下,return alert("Email格式不正确!\n必须包含.符号!");  
    document.myform.txtEmail.focus();改为
    return alert(),document.myform.txtEmail.focus(),false;
    因为你的return 在focus之前,后面的代码是不会被执行的.
      

  8.   

    函数传参的时候把控件的id也传过去
    或者在已知控件id的情况下直接用focus
      

  9.   

    matrixy(处女主任[走召纟及犭孟男 上厕所不关门,上完不擦P股]  谢谢!!!能成功了!!!
      

  10.   

    我在asp页面上用浏览器打开试运行的时候.能验证错误,可是却不能把光标定位到错误的地方是什么原因呢?错误提示如下:
      document.myform.txtUsername 为空不是对象!
    什么意思???
      

  11.   

    RegisterStartupScript("onclick",
    "<script language=javascript> return alert('用户名不存在或是密码错误!'),document.Form1.txtUserName.focus(),document.Form1.txtUserName.select(),false;</script>");
    上面的这个代码我是让它在服务器端运行客户端的javascript代码!可有错误!并且没有提示;
    怎么才能让它在正确运行呢???高手请帮帮忙!!!!
      

  12.   

    @_@ 表示你的那个对象ID写错了,找不到对象,如果你那有URL的话,可给我看看,这样子是很不便于给你解说的.
      

  13.   

    昨天的问题已解决了  现在又有问题了:
    我在asp页面的代码上用Struct传参数,我定义了9个参数全部用string 型的.我的数据库里有9个字段其中3个字段是int型的为空.我想在页面上不输入值,已要这个插入语句能执行成功???可问题出来了,如下:
    这是asp页面的:
    private void btnSubmit_Click(object sender, System.EventArgs e)
    {
    string username=this.txtUsername.Text.Trim();
    string pwd=this.txtPwd.Text.Trim();
    string email=this.txtEmail.Text.Trim();
    string name=this.txtName.Text.Trim();
    string oftenno=this.txtHandsetNo.Text.Trim();
    string qqno=this.txtQQNumber.Text.Trim();
    string handsetno=this.txtHandsetNumber.Text.Trim();
    string postalcode=this.txtPostalcode.Text.Trim();
    string address=this.txtAddress.Text.Trim();
    DataAccess da=new DataAccess();
    da.getRegister(username,pwd,email,name,oftenno,qqno,handsetno,postalcode,address);
    }
    }这下面的是DataAccess类中getRegister方法代码:
    public class DataAccess
    {
    private SqlConnection conn;
    private SqlCommand cmd; public DataAccess()
    {
    Connect cn=new Connect();
    this.conn=cn.getConnect();
    }
    //public bool getRegister(RegisterParamter parm)
    public bool getRegister(string username,string pwd,string email,string name,string oftenno,string qqno,string handno,string post,string addr)
    {
    this.conn.Open();
    string strsql="insert into UserName,PassWord,Email,ContactName,OftenNo,QQNo,HandsetNo,Postalcode,Address UserInfo values ('"+
    username+"','"+pwd+"','"+email+"','"+name+"',"+oftenno+","+qqno+","+handno+","+post+",'"+addr+"')";
    // string strsql="insert into UserInfo values ('"+parm._username+"','"+parm._pwd+"','"+parm._email+"','"+parm._name+"',"+
    // parm._oftenno+","+parm._qqno+","+parm._handsetno+","+parm._postalcode+",'"+parm._address+"')";
    try
    {
    this.cmd=new SqlCommand(strsql,this.conn);
    this.cmd.ExecuteNonQuery();
    }
    catch(SqlException ex)
    {
    throw new Exception(ex.ToString());
    }
    finally
    {
    this.conn.Close();
    }
    return true;
    }
    }
    上面的代码执行到this.cmd.ExecuteNonQuery()的时候就提示错误了,如下:
    System.Data.SqlClient.SqlException: 第 1 行: ',' 附近有语法错误。 at System.Data.SqlClient.SqlCommand.ExecuteNonQuery() at Registration.DataAccess.getRegister(String username, String pwd, String email, String name, String oftenno, String qqno, String handno, String post, String addr) in e:\注册页面\registration\dataaccess.cs:line 44
      

  14.   

    语法错误????我没看到哪里有语法错误...放到VS.NET编辑器里也没看到.....