2014-01-29 2 views
1

Я стараюсь, чтобы это работало так, как мне нужно. У меня есть два RequiredFieldValidators и две текстовые поля (примечание стороны: хотя у меня есть JavaScript, ниже я не возражаю делать это по-другому я попробовать код позади, но понял, проверка вратаря удар, пока я не нажал на кнопку дважды.):Подтвердить элементы управления при условиях

<asp:TextBox ID="EmailTextbox" runat="server"></asp:TextBox> 
<asp:RequiredFieldValidator ID="EmailR" runat="server" ErrorMessage="Email" ControlToValidate="EmailTextbox" ></asp:RequiredFieldValidator> 
<asp:TextBox ID="NameTextbox" runat="server"></asp:TextBox> 
<asp:RequiredFieldValidator ID="NameR" runat="server" ErrorMessage="Enter your name" ControlToValidate="NameTextbox" ></asp:RequiredFieldValidator> 

я тогда есть скрипт

<script type="text/javascript"> 
    $(document).ready(function() { 
     $('#<%=EmailTextbox.ClientID%>').keyup(function() { 
      if ($(this).val() != '') { 
       ValidatorEnable(document.getElementById('<%= NameR.ClientID%>'), true); 

       } 
       else 
        ValidatorEnable(document.getElementById('<%= NameR.ClientID%>'), false); 

      }); 
    }); 
</script> 

Что им пытаются сделать, это:

Если EmailTextbox имеет электронную почту, то отключить проверку NameTextbox. Если EmailTextbox не имеет электронной почты, включите проверку NameTextbox и отключите проверку электронной почты.

С тем, что я довольно новичок в JQuery/Javascript, я попытался несколько попыток попытаться достичь выше, но, прочитав больше в нем, существует вероятность того, что у меня может быть неправильный файл JQuery (который сказал, что это существующий проект Я havent действительно добавил какой-либо ref в любой JQuery, поэтому вполне может быть, что у меня есть код, но мне нужна ссылка на JQuery или вам нужно включить новую версию).

В общем, если я могу

Благодаря

ответ

0

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

 <script type="text/javascript"> 
    $(document).ready(function() { 
     $('#<%=EmailTextbox.ClientID%>').keyup(function() { 
      if ($.trim($(this).val()).length) 
       ValidatorEnable(document.getElementById('<%= NameR.ClientID%>'), false); 
       ValidatorEnable(document.getElementById('<%= EmailTextbox.ClientID%>'), true); 

       } 
       else 
       { 
        ValidatorEnable(document.getElementById('<%= NameR.ClientID%>'), true); 
        ValidatorEnable(document.getElementById('<%= EmailTextbox.ClientID%>'), false); 
       } 

      }); 
    }); 
</script> 
+1

Пожалуйста, добавьте некоторые пояснения к вашему ответу –

0

Вы можете попробовать это, подобно тому, что у вас было.

function doSomething() 
{ 
    var myVal = document.getElementById('myValidatorClientID'); 
    ValidatorEnable(myVal, false); 
} 

Или вы могли бы использовать видимый = истина/ложь на них, который делает их неактивными (то есть установить видимую свойство из кода позади) .. Это может стоить вам АЯКС поездку кода за помощью scripmanager и __doPostBack чтобы вызвать функцию на стороне сервера, которая может, чем обрабатывать вашу логику ... Многие разработчики не понимают, что, по крайней мере, в веб-формах, вы можете вызывать свой код за методами из JS, просто будьте очень осторожны - как каждый вызов назад может получить дорого ...

хорошая статья о связи с («переднего конца к закодировать за помощью JS») - http://www.codedigest.com/Articles/ASPNET/320_Doing_or_Raising_Postback_using___doPostBack()_function_from_Javascript_in_AspNet.aspx

Надеюсь, что поможет вам вернуться на правильный путь !!!

1

Вы можете попробовать это

$(document).ready(function() { 
     $('#<%=EmailTextBox.ClientID%>').keyup(function() { 
      if ($(this).val() != null && $(this).val().length != 0) { 
       $('#<%= NameRequiredFieldValidator.ClientID%>').hide(); 

      } 
      else { 
       $('#<%= NameRequiredFieldValidator.ClientID%>').show(); 
       $('#<%= EmailRequiredFieldValidator.ClientID%>').hide(); 
      } 
     }); 
Смежные вопросы