2012-03-06 2 views
4

Я использую JQuery, чтобы скрыть/показать div в зависимости от выбранного значения поля со списком. Эта часть работает нормально. Однако при скрытии div функция jquery также должна отключить 3 RequiredFieldValidators, которые находятся в этом div. Я искал в Интернете, и, кажется, что это легко может быть выполнено с помощью:Использование JQuery для отключения RequiredFieldValidators

ValidatorEnable(ValidatorName, false); 

Но когда я пытаюсь с помощью этого метода, ничего не работает, то RequiredFieldValidators еще выводится сообщение об ошибке, даже если ДИВ скрыта.

Моя функция JQuery:

<script type="text/javascript"> 
     $(document).ready(function() { 
      var det = $("#SponsorDetails"); 
      $(det).hide(); 
      var all = $("#AllDetails"); 
      $(all).hide(); 

      $("#<%=SelectAccount.ClientID %>").click(function() { 
       //hide social worker and sponsor stuff 
       var value = $("#<%=SelectAccount.ClientID %> option:selected").val(); 
       if (value == "Social_Worker") { 
        //show social worker stuff 
        $("#AllDetails").show("slow"); 
        $("#SponsorDetails").hide("slow"); 
        ValidatorEnable(document.getElementById("#<%=AddressValidator.ClientID %>"), false); 
        ValidatorEnable(document.getElementById("#<%=CityValidator.ClientID %>"), false); 
        ValidatorEnable(document.getElementById("#<%=CountryValidator.ClientID %>"), false); 

       } else if (value == "Sponsor") { 
        //show sponsor stuff 
        $("#AllDetails").show("slow"); 
        $("#SponsorDetails").show("slow"); 
        ValidatorEnable(document.getElementById("#<%=AddressValidator.ClientID %>"), true); 
        ValidatorEnable(document.getElementById("#<%=CityValidator.ClientID %>"), true); 
        ValidatorEnable(document.getElementById("#<%=CountryValidator.ClientID %>"), true); 

       } 
      }); 

     }); 


    </script> 

Кто-то предложил, чтобы я мог использовать Validation группы или пользовательские валидатор, но с помощью JQuery просто кажется намного проще, но я не знаю, почему она не будет работать.

ответ

3

Вы путаете jQuery с помощью простого javascript. В простом javascript мы не используем символ # перед идентификатором элемента. Поэтому удалите его со всех getElementById и он будет работать.

Например

document.getElementById("<%=CountryValidator.ClientID %>") 

Ошибка вы получаете, потому что вы звоните getElementById с вне проверить возвращение из них, так что вы получите сообщение об ошибке броска от использования возврата этой функции, которые не могут быть использованы.

+0

спасибо, это сработало! – Matt

0

Вы можете использовать следующий фрагмент кода, чтобы позволить валидатор вручную запуска снова ... использовать в Jquery

ValidatorEnable($("[id$='RegularExpressionValidator4']")[0], true); 
+0

Просьба предоставить более подробную информацию об ответе, который вы написали. Это поможет другим понять это ясно – silwar

+0

Он используется для включения проверки вручную вручную для запуска ... использование в JQuery .. –

Смежные вопросы