Сразу после сбоя проверки ASP я не могу вызвать метод обслуживания ТОЛЬКО в первый раз, даже если я предоставил правильный ввод - PullRequest
0 голосов
/ 17 апреля 2019

У меня есть небольшая форма с валидацией asp. После сбоя проверки с неправильным вводом я предоставляю правильный ввод и нажимаю кнопку. Ничего не происходит, если * все еще отображается, что указывает на ошибку. Однако при повторном нажатии кнопки сервис вызывается.

Это первый сценарий предоставления неверной корзины:

enter image description here

Это второй сценарий:

enter image description here

При правильном вводе и нажатии кнопки «Поиск» должен вызываться вызов сервисного метода, но он ничего не делает. Только после того, как я снова нажимаю «Поиск», он вызывает сервис

Это мои валидаторы с кнопкой:

   <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;
}

Чего мне не хватает?

1 Ответ

0 голосов
/ 17 апреля 2019

Я думаю, вам нужно отключить RegularExpressionValidator, когда в раскрывающемся списке выбрано значение Name.

Добавить обработчик события 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);
    }
}
...