Сообщение проверки все еще появляется, когда срабатывает выпадающий список автоответчика - PullRequest
4 голосов
/ 08 декабря 2010

У меня есть обязательное поле для проверки, чтобы проверить выпадающий список.этот раскрывающийся список является автоответчиком, и его свойствоausevalidation имеет значение false.

Проблема в том, что, когда я выбираю элемент по умолчанию, отображается сообщение проверки, но все равно выполняется обратная передача.И после обратной передачи сообщение отклоняется.

вот фрагмент кода:

<asp:RequiredFieldValidator ID="ContactMethodRequired" runat="server" ControlToValidate="ContactPreferences"
            Display="Dynamic" ErrorMessage="Please choose your contact method"
            EnableClientScript="true" InitialValue=""></asp:RequiredFieldValidator>
        <div>
            <asp:DropDownList ID="ContactPreferences" runat="server" AutoPostBack="true" CausesValidation="false">
                <asp:ListItem Text="Select" Value="" Selected="True"></asp:ListItem>                         
                <asp:ListItem Text="Email" Value="Email"></asp:ListItem>
                <asp:ListItem Text="Phone" Value="Phone"></asp:ListItem>
            </asp:DropDownList>
        </div>

Ответы [ 3 ]

0 голосов
/ 24 декабря 2010

Видите ли вы вызов метода WebForm_DoPostBackWithOptions в событии onchange элемента HTML или вызов метода __doPostBack? Первый делает вызов Page_ClientValidate () перед выполнением обратной передачи, вы можете использовать инструмент отладки JS, чтобы увидеть путь, по которому он идет. Кроме того, поскольку это группа проверки по умолчанию, может ли что-то еще вызывать ее?

0 голосов
/ 04 июля 2012

Каким-то образом валидатор что-то здесь сбивает с толку. Чтобы предотвратить поведение, есть разные способы:

1) Вы можете установить

EnableClientScript="false"

на валидаторе, что означает, что он проверяется на сервере.

Если это имеет нежелательные побочные эффекты (поскольку валидатор «перегружен» другими валидаторами клиента), вы можете сделать это

2) добавить эту функцию javascript / jquery на страницу:

function HideValidator() {

     var validator = $('#<%= ContactMethodRequired.ClientID %>');
     validator.hide();
}

и обработчик событий для ddl:

onchange="HideValidator();"
0 голосов
/ 09 декабря 2010
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title> 
<script type="text/javascript" language="javascript" >
 function ValidPage() 
    {                             
       if (typeof(Page_ClientValidate) == 'function')  
       { 
            if (typeof (Page_ClientValidate) == 'function') { Page_ClientValidate();     }  
            if (!Page_IsValid) 
            {           

                return false;
            }                  
            return Page_IsValid; 
      } 
      return true;  
    } 

</script>
</head>
<body >
    <form id="form1" runat="server"  onsubmit="return ValidPage();"  >

        <div> 
            <asp:DropDownList ID="ContactPreferences" runat="server"       AutoPostBack="true"  CausesValidation="false"> 
                <asp:ListItem Text="Select" Value="" Selected="True"></asp:ListItem>  
                <asp:ListItem Text="Email" Value="Email" ></asp:ListItem> 
                <asp:ListItem Text="Phone" Value="Phone"></asp:ListItem> 
            </asp:DropDownList> 


            <asp:RequiredFieldValidator    ID="RequiredFieldValidator1" runat="server" ControlToValidate="ContactPreferences" 
            Display="Dynamic" ErrorMessage="Please choose your contact method" 
            EnableClientScript="true" InitialValue=""></asp:RequiredFieldValidator> 

        </div> 

    </form>
</body>
</html>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...