【问题标题】:Right after ASP validation fails, I cannot invoke the service method ONLY first time even if I provide the correct input在 ASP 验证失败后,即使我提供了正确的输入,我也无法仅在第一次调用服务方法
【发布时间】:2019-04-17 16:19:33
【问题描述】:

我有一个带有 asp 验证的小表单。 在验证因输入错误而失败后,我提供正确的输入并按下按钮。 * 仍然显示指示错误,没有任何反应。但是,当第二次按下按钮时,会调用该服务。

这是提供错误 Bin 时的第一种情况:

这是第二种情况:

当输入正确并按下“搜索”按钮时,应该会调用服务方法,但它不会做任何事情。只有在我再次按下“搜索”后它才会调用该服务

这是我的带有按钮的验证器:

   <span style="position:relative">
        <asp:RequiredFieldValidator ID="RequiredFieldValidator3" runat="server" CssClass="searchValidator"  ErrorMessage="Bin is missing" ControlToValidate="txtIssuerSearch" ForeColor="Red" ValidationGroup="vgIssuerSearch">*</asp:RequiredFieldValidator>
        <asp:RegularExpressionValidator ID="RegularExpressionValidatorIssuerSearch" runat="server" CssClass="searchValidator" ErrorMessage="Invalid Bin Entered" ControlToValidate="txtIssuerSearch" ForeColor="Red" ValidationGroup="vgIssuerSearch" ValidationExpression="^([0-9]{6}|[0-9]{8})$">*</asp:RegularExpressionValidator>
   </span> 
       <asp:TextBox ID="txtIssuerSearch" runat="server"></asp:TextBox>
<asp:DropDownList ID="ddlIssuerSearch" runat="server">
<asp:ListItem>Name</asp:ListItem>
<asp:ListItem>Bin</asp:ListItem>
</asp:DropDownList>
<asp:Button ID="btnIssuerSearch" runat="server" class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only" 
    CausesValidation="false" CommandName="Search" Text="Search" OnCommand="btnIssuerSearch_Click" OnClientClick="return ValidateOnSearch()" />

这是我的 javascript 函数:

function ValidateOnSearch() {

var isValid = false;
var ddlValue = $('#cphBody_ddlIssuerSearch :selected').text();

if (ddlValue == 'Name') {
    isValid = true;
}
else {
    isValid = Page_ClientValidate('vgIssuerSearch');
 }

if (!isValid) {
    $("#errorDisplaySearch").dialog({
        title: "Validation Error",
        modal: true,
        resizable: false,
        width: 250,
        buttons: {
            Close: function () {
                $(this).dialog('close');
            }
        }
    });
    return false;
}
return true;
}

我错过了什么?

【问题讨论】:

    标签: asp.net validation client-side


    【解决方案1】:

    我认为您需要在下拉列表中选择 Name 值时禁用 RegularExpressionValidator。

    在下拉列表中添加 onchange 事件处理程序:

    <asp:DropDownList ID="ddlIssuerSearch" runat="server" onchange="updateValidatorStatus(this.value)">
    
        updateValidatorStatus(selectedVal) {
    
        var regExpVal = document.getElementById('<%=RegularExpressionValidatorIssuerSearch.ClientID%>');
    
        if (selectedVal === 'Name') {
            ValidatorEnable(regExpVal, false);
        } else {
            ValidatorEnable(regExpVal, true);
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2011-07-22
      • 2020-08-26
      • 1970-01-01
      • 2020-10-03
      • 1970-01-01
      • 1970-01-01
      • 2016-06-15
      • 2012-01-14
      • 2013-04-17
      相关资源
      最近更新 更多