0
在下面的代码中,我在插入和更新事件时使用了requiredfieldvalidator以及onclientclick confirm事件。冲突OnClientClick事件和RequiredFieldValidator
如果requiredfieldvalidator不满足,验证程序会正确阻止更新或插入的发生。但是,由于按钮仍然可点击,onclientclick确认事件仍会触发。有没有办法阻止onclientclick confirm事件发生,直到requiredfieldvalidator满足或禁用插入/更新链接,直到requiredfieldvalidator满足为止?
我宁愿一个非javascript/jquery解决方案,但如果没有其他方法,我会对它开放。
<asp:DetailsView ID="DetailsView1" runat="server" AutoGenerateRows="False"
DataSourceID="ObjectDataSource2" CssClass="detail"
OnItemInserted="UpdateGrid" CaptionAlign="Left">
<Fields>
<asp:TemplateField HeaderText="APP" SortExpression="APP">
<EditItemTemplate>
<asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("APP") %>'></asp:TextBox>
</EditItemTemplate>
<InsertItemTemplate>
<asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("APP") %>'></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server"
ControlToValidate="TextBox1"
ErrorMessage="New applications must have an App_Tag"></asp:RequiredFieldValidator>
</InsertItemTemplate>
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# Bind("APP") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField ShowHeader="False">
<EditItemTemplate>
<asp:LinkButton ID="LinkButton1" runat="server" CausesValidation="True"
CommandName="Update" Visible='<%# ShowEditButton() %>' OnClientClick="if (!confirm('Are you sure you want update?')) return false;" Text="Update"></asp:LinkButton>
<asp:LinkButton ID="LinkButton2" runat="server" CausesValidation="False"
CommandName="Cancel" Text="Cancel"></asp:LinkButton>
</EditItemTemplate>
<InsertItemTemplate>
<asp:LinkButton ID="LinkButton9" runat="server" CausesValidation="False"
CommandName="Insert" ValidationGroup="group1" Visible='<%# ShowEditButton() %>' OnClientClick="if (!confirm('Are you sure you want insert?')) return false;" Text="Insert"></asp:LinkButton>
<asp:LinkButton ID="LinkButton10" runat="server"
CommandName="Cancel" OnClick="HidePopUp" Text="Cancel"></asp:LinkButton>
</InsertItemTemplate>
<ItemTemplate>
<asp:LinkButton ID="LinkButton4" runat="server" CausesValidation="False"
CommandName="Edit" OnClick="EditMode" Text="Edit" Visible='<%# ShowEditButton() %>' ></asp:LinkButton>
<asp:LinkButton ID="LinkButton10" runat="server" CausesValidation="False"
CommandName="Cancel" OnClick="HidePopUp" Text="Close"></asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
</Fields>
</asp:DetailsView>
感谢您的评论。我找不到任何其他的方式来做到这一点,所以我正在研究你建议的Javascript解决方案。 – TimidObserver
您仍然必须验证服务器端,以免某人禁用JavaScript。 – sh1rts