none
ASP.NET驗證控制項,彈跳視窗之後的焦點轉移? RRS feed

  • 問題

  • ASP.NET有提供驗證控制項,很方便,

    目前使用彈跳視窗顯示錯誤訊息,但不知道該如何轉移使用者按下確定之後的焦點,

     

    如果有文字框沒填寫,會出現沒填寫文字框的警告訊息,

    有兩個就出現兩個,一個就出現一個,條列式,

    出現彈跳視窗(alert)警告使用者,

    使用者按下確定之後,會將焦點帶到沒填寫的文字框的第一個,

     

    程式碼如下:

    程式碼區塊

    名稱:

    <asp:TextBox ID="Name" runat="server"></asp:TextBox><asp:RequiredFieldValidator
                        ID="RequiredFieldValidator1" runat="server" ErrorMessage="請填寫名稱" ControlToValidate="Name"
                        Display="none" ValidationGroup="createenid"></asp:RequiredFieldValidator>

    <br/>

    <asp:Button ID="btnCreateEntId" runat="server" Text="新增" ValidationGroup="createenid" />

    <asp:ValidationSummary ID="ValidationSummary1" runat="server" ShowMessageBox="True"
            ShowSummary="False" DisplayMode="List" ValidationGroup="createenid" />

     

     

    如果使用者沒填寫,按下新增之後,會跳出訊息視窗,

    之後就沒動作了,

    但想做到按下確定之後,直接跑到Name文字框的焦點,

    請問要怎麼做?

     

    如果想達到以上交求,需要自己寫js吧,或是只要設定一下即可呢?

     

    2007年10月31日 上午 07:04

解答

所有回覆

  •  

    找到相關的文章了~

     

    網址如下:

    http://www.cnblogs.com/artech/archive/2007/05/12/743542.html

    2007年10月31日 上午 08:39
  • 程式碼區塊

    <script language="javascript" type="text/javascript">
    function check()
    {
        for(var i=0;i<Page_Validators.length-1;i++)  
        {
            if(!RequiredFieldValidatorEvaluateIsValid(eval(Page_Validators[i].id)))
            {
                eval(alert(Page_Validators[i].errormessage));
                document.getElementById(Page_Validators[i].controltovalidate).focus();
                break;
            }
        }  
    }
    function check2()
    {
        var def='';
        var str='';
        var c=0;
        for(var i=0;i<Page_Validators.length-1;i++)  
        {
            if(!RequiredFieldValidatorEvaluateIsValid(eval(Page_Validators[i].id)))
            {
                str+=Page_Validators[i].errormessage+'\r\n';
                if(c==0)
                {
                    c++;
                    def=Page_Validators[i].controltovalidate;
                }
            }
        }
        if(!str=='')
        {
            alert(str);
            document.getElementById(def).focus();
        }
    }
        </script>

     

    <asp:TextBox ID="Name" runat="server"></asp:TextBox><asp:RequiredFieldValidator
                        ID="RequiredFieldValidator1" runat="server" ErrorMessage="請填寫名稱" ControlToValidate="Name"
                        Display="none" ValidationGroup="createenid"></asp:RequiredFieldValidator>

    <br/>
    <asp:TextBox ID="Memo" runat="server"></asp:TextBox><asp:RequiredFieldValidator
                        ID="RequiredFieldValidator2" runat="server" ErrorMessage="請填寫說明" ControlToValidate="Memo"
                        Display="none" ValidationGroup="createenid"></asp:RequiredFieldValidator

     

    <br/>

                    <asp:Button ID="btnCreateProG" runat="server" Text="新增" ValidationGroup="createenid" />
                    <asp:CustomValidator ID="CustomValidator1" runat="server" ClientValidationFunction="check"
                        ValidationGroup="createenid"></asp:CustomValidator>

     

     

     

    以上copy貼上可測試~

    CustomValidator1屬性可設定check以及check2,看看有何不同

    check為預設,只秀出第一種錯誤,並回該控制項焦點

    check2為秀出全部錯誤,回第一個錯誤的控制項焦點

    2007年10月31日 上午 10:58