2013-03-04 2 views
1

На моей странице у меня есть список кнопок с радио и текстовое поле.Пользовательское поле обязательное поле обязательное для заполнения на radioobuttonlist

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

Я добавил следующий код, однако он не работает вообще, и когда кнопка нажата для перехода на следующую страницу, она продолжается, а не останавливается и просит пользователя ввести что-то в поле ,

function Q12iYes() {   
     document.getElementById('txt12i').style.display = "block" 
    } 
    function Q12iNo() { 
     document.getElementById('txt12i').style.display = "none" 
    }  


<asp:RadioButtonList ID="rbtn12" runat="server" RepeatDirection="Horizontal"> 
    <asp:ListItem Value="Yes" onclick="Q12iYes()" /> <asp:ListItem Value="No" Selected="True" onclick="Q12iNo()" /> 
    </asp:RadioButtonList> 
      <br /> 

    12.i) If &#39;Yes&#39; please provide details<br /> 
    <br /> 
    <asp:TextBox ID="txt12i" runat="server" Height="62px" TextMode="MultiLine" Width="343px"></asp:TextBox> 
      <br />     
      <asp:CustomValidator ID="MyTxtBoxValidator" runat="server" ControlToValidate="txt12i" ValidateEmptyText="true" ErrorMessage="Please enter some values into Textbox" 
      ClientValidationFunction="validateMyBtn" Display="Dynamic"> </asp:CustomValidator> 
       <script type="text/javascript"> 
        function validateMyBtn(oSrc, args) { 
         var rbtnValue = null; 
         var rbtnList = document.getElementsByName('<%=rbtn12.ClientID %>'); 
         var radio = rbtnList[0].getElementsByTagName("input"); 
         for (var i = 0; i < radio.length; i++) { if (radio[i].checked) rbtnValue = radio[i].value; } 
         if (rbtnValue == "Yes") { args.IsValid = !(args.Value == "") } 
         else { args.IsValid = true; } 
} 
</script> 

<asp:Button ID="btnContinue" runat="server" OnClick="btnContinue_Click" Text="Continue" /> 

Я имел взгляд на том, как это сделать, но я ничего не видел, работал, то ли помог мне понять, где я буду неправильно.

Может ли кто-нибудь помочь?

+0

Вам нужен пользовательский валидатор? Почему бы не использовать обязательный полевой валидатор? Если поле ввода не отображается, требуемый модуль проверки поля не будет проверять. –

+0

Из всех моих поисков казалось, что пользовательский валидатор был тем, что мне нужно, поскольку я использую javascript для отображения и скрыть текстовое поле, когда пользователь выбирает. Я пытаюсь найти наиболее эффективный способ сделать это. – saintsfanuk

+0

Можете ли вы использовать jQuery? –

ответ

3

CustomValidator не проверяет пустой текст по умолчанию, так что установить ValidateEmptyText property:

<asp:CustomValidator ValidateEmptyText="true" ID="MyTxtBoxValidator" runat="server" ... 

Edit Проблема была ваша Java-функция проверки, которая работает только в IE. Вот эта версия, которая хорошо также работает и в других браузерах:

function validateMyBtn(oSrc, args) { 
     var rbtnList = document.getElementsByName('<%=rbtn12.ClientID %>'); 
     var noClicked = false; 
     for (var x = 0; x < rbtnList.length; x++) { 
      if (rbtnList[x].checked) { 
       noClicked = rbtnList[x].value == "No"; 
       break; 
      } 
     } 
     if (noClicked) 
      args.IsValid = true; 
     else 
      args.IsValid = args.Value.trim().length > 0; 
} 
+0

Это уже сделано в примере кода, который я предоставил? – saintsfanuk

+0

@saintsfanuk: Оказалось, что это важно в этом контексте, вы должны были упомянуть об этом явно. –

+0

Изменил его, и он все равно не имеет значения, поэтому я не думаю, что это проблема. – saintsfanuk

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