我在第2和第3 ajax手风琴面板中有必要的字段。我在我的必填字段验证器上有setfocus = true,相应的面板不会自动打开。
有没有办法让它打开面板,下一个必填字段位于哪里?
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:Accordion
ID="Accordion1"
runat="server">
<Panes >
<asp:AccordionPane runat="server" >
<Header>General Information </Header>
<content>
<asp:textbox id="textbox1" runat="server"/>
</content>
</asp:AccordionPane>
<asp:AccordionPane runat="server" >
<Header>Other Information </Header>
<content>
<asp:textbox id="textbox2" runat="server"/>
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" SetFocusOnError="true" runat="server"
ErrorMessage="error on textbox 2" ControlToValidate="textbox2" ForeColor= "Red" ValidationGroup="main">*</asp:RequiredFieldValidator>
</content>
</asp:AccordionPane>
<asp:AccordionPane runat="server" >
<Header>More Information </Header>
<content>
<asp:textbox id="textbox3" runat="server"/>
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" SetFocusOnError="true" runat="server"
ErrorMessage="error on textbox 3" ControlToValidate="textbox3" ForeColor= "Red" ValidationGroup="main">*</asp:RequiredFieldValidator>
</content>
</asp:AccordionPane>
</asp:accordion>
//the rest of the code here
//i typed this up, so please forgive if not everything is case sensitive
在这种情况下,如果我在第一个窗格上,并单击“验证”按钮,则必填字段位于第二个和第三个窗格中。验证确实失败了,就像它应该的那样,但用户不会被带到textbox2或textox3(它们是空的)。我如何对其进行编码,以便在验证失败时将焦点自动设置为下一个失败的文本框?如果我在单击“验证”按钮时已打开窗格2,它确实有效,在这种情况下焦点设置为textbox2。但话又说回来,如果我在textbox2中添加了一些内容并再次验证,则textbox3会失败,但焦点未设置。
希望这是有道理的。
答案 0 :(得分:0)
一次不打开两个手风琴小组。基本上,控制不是那样设计的。您可以改用可折叠面板。 但是本文指定了一种方法
http://www.c-sharpcorner.com/uploadfile/Zhenia/keeping-multiple-panes-open-in-accordion-web-control/
此处还有使用JavaScript打开手风琴面板的链接。
http://forums.asp.net/t/1194270.aspx
jQuery Accordion - open specific section on pageload
希望这有帮助