Javascript问题:无法在ASP.NET中单击保存按钮回发

时间:2017-07-12 20:25:02

标签: javascript c# jquery asp.net

我在弹出窗口中有一个文本框和保存按钮,文本框中有一个必填字段验证器。我有一个场景,如果用户意外忘记在文本框中输入数据并单击保存所需的字段验证器,这是预期的。但是,现在,如果用户在文本框中输入数据并点击“保存”,则记录不会在第一次点击时保存,而是需要额​​外点击。我知道这样做的原因:第一次点击按钮时没有回复,但是第二次按下并保存数据。

有没有人知道这方面的解决方法?最终用户对此额外点击感到恼火。请注意,没有与之关联的JavaScript功能。它是从浏览器自动生成的javascript。

代码:

<div class="row">
                                <div class="col-md-12">
                                    <div class="form-group">
                                        <asp:Label runat="server" Text="" AssociatedControlID="txtTitle">
                                                    Title<span class="text-danger">*</span>
                                        </asp:Label>
                                        <asp:TextBox runat="server" CssClass="form-control" ID="txtTitle" >
                                        </asp:TextBox>
                                        <asp:RequiredFieldValidator runat="server" ControlToValidate="txtTitle" Display="Dynamic" ErrorMessage="Required" ValidationGroup="questionTitle" CssClass="text-danger">
                                        </asp:RequiredFieldValidator>                
                                    </div>
                                </div>
                            </div>

保存按钮:

 <div class="row">


<div class="col-md-3 col-md-offset-9">
                                <asp:LinkButton runat="server" ID="lnkSave" CssClass="btn btn-lg btn-block btn-success btn-lg" role="button" ValidationGroup="questionTitle" OnClick="lnkSave_Click">
                            <i class="fa fa-floppy-o"></i>&nbsp;Save
                                </asp:LinkButton>
                            </div>
                        </div>

1 个答案:

答案 0 :(得分:0)

这似乎是验证器的常见问题。

验证者错误是假设在将焦点丢失到文本框时清除

但是,显然如果您的验证器Display设置为Dynamic,当出现错误消息时,它将导致触发清除验证器错误失败。

因此点击两次(第一次点击触发清除错误应该先前触发但失败,第二次触发实际表格发布)

解决方案是将RequiredFieldValidator Display更改为Static

更多信息结帐

RequiredFieldValidator have to click twice
RequiredFieldValidator requires user to click twice