我想在页面上做表单验证,但无论如何,每次都提交到后台执行,我想在f_doSave()返回false时,不执行doSave方法,请各位高手指点,谢谢!!页面:<script type="text/javascript" language="javascript">
        
        function f_doSave()
        {
            var str = "";
            str = document.all.txtUserName.value;
            if(str.length > 0)
            {                
                return true;
            }
            else
            {                
                return false;
            }            
        }
    </script>
</head><table>
        <tr>
            <td> <asp:TextBox ID="txtUserName" runat="server" Width="100" /></td>
        </tr>
        <tr>
            <td><asp:Button ID="btnSave" runat="server" Width="50" Text="保存" OnClick="doSave" /></td>
        </tr>
    </table>
后台:protected void Page_Load(object sender, EventArgs e)
    {        
        if(!IsPostBack)
        {
            this.btnSave.Attributes.Add("onclick", "return f_doSave();");
        }
    }
    
    protected void doSave(object sender, EventArgs e)
    {
        string str = this.txtUserName.Text.Trim();
        if (str.Length > 0)
        {
            Response.Write("<script>alert('" + str + "')</script>");
            
        }
        
    }
就这样,可以执行上面的JAVASCRIPT,但如论返回true or false,都能执行doSave方法。

解决方案 »

  1.   


            protected void Page_Load(object sender, EventArgs e) 
            {                 
                    if(!IsPostBack) 
                    {       //这里改一下试试
                            //this.btnSave.Attributes.Add( "onclick ",   "return   f_doSave(); "); 
                            this.btnSave.Attributes.Add( "onclick ",   "javascript:return f_doSave(); "); 
                    } 
            } 
            
            protected   void   doSave(object   sender,   EventArgs   e) 
            { 
                    string   str   =   this.txtUserName.Text.Trim(); 
                    if   (str.Length   >   0) 
                    { 
                            Response.Write( " <script> alert( ' "   +   str   +   " ') </script> "); 
                            
                    } 
                    
            } 
      

  2.   

    在DoSave返回的false并不能够终止 onclick事件的发生,但是如果事 onclick="return false" 就是终止onclick的发生。
    而其他电脑可以执行。可能浏览器的不同而造成的。尝试onclick="if(dosave())return true; else return false;"看看可以不?
      

  3.   

            protected void Page_Load(object sender, EventArgs e) 
            {                 
                    if(!IsPostBack) 
                    {      
                            this.btnSave.Attributes.Add( "onclick ",   "if(false == f_doSave())return false; "); 
                      } 
            } 
      

  4.   

    <asp:Button OnClientClick="return f_doSave();"   ID= "btnSave "   runat= "server "   Width= "50 "   Text= "保存 "   OnClick= "doSave "   />
      

  5.   

    看下  document.all.txtUserName.value; 这个变量是不是不存在或者名子txtUserName,不是这个了。应该是js出错了。所以直接提交到后台。
      

  6.   

    Button1.Attributes.Add("OnClick", "javascript:return checkAll();");
    <script   type= "text/javascript "   language= "javascript "> 
                    
                    function   f_doSave() 
                    { 
                            var   str   =   " "; 
                            str   =   document.getElementById ( "txtUserName" ).value; 
                            if(str.length   >   0) 
                            {                                 
                                    return   true; 
                            } 
                            else 
                            {                                 
                                    return   false; 
                            }                         
                    } 
            </script>