asp.net проверяет текстовое поле - хотя бы одно текстовое поле должно содержать данные в - PullRequest
2 голосов
/ 18 сентября 2009

У меня есть три текстовых поля, и я хочу их проверить. По крайней мере одно текстовое поле должно содержать данные.

Как я могу это сделать?

(текстовые поля: «Домашний телефон», «Рабочий телефон», «Мобильный», и мне нужно проверить, указан ли хотя бы один метод связи)

Ответы [ 3 ]

9 голосов
/ 27 сентября 2009
<script language="javascript">
     function Validate(sender, args){    
       args.IsValid = false;    
       if(args.Value != "")    
       {        
         args.IsValid = true;    
    }}</script>

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

<asp:TextBox ID="txtHomePhone" runat="server"></asp:TextBox>
<asp:TextBox ID="txtWorkPhone" runat="server"></asp:TextBox>
<asp:TextBox ID="txtMobilePhone" runat="server"></asp:TextBox>

<asp:CustomValidator ID="cvMobilePhone" runat="server" ErrorMessage="ADASDASDA" ClientValidationFunction="Validate"
  ValidateEmptyText="true"></asp:CustomValidator>

<script language="JavaScript">
  function Validate(sender, args) {
    var txt1 = document.getElementById("<%= txtHomePhone.ClientID %>");
    var txt2 = document.getElementById("<%= txtWorkPhone.ClientID%>");
    var txt3 = document.getElementById("<%= txtMobilePhone.ClientID%>");
    args.IsValid = (txt1.value != "") || (txt2.value != "") || (txt3.value != "");
  }
</script>

Если вы хотите повторно использовать функцию, вы можете добавить атрибуты к вашему объекту проверки. Проверьте это: http://alejandrobog.wordpress.com/2009/09/27/pass-your-own-arguments-to-the-clientvalidationfunction-in-a-customvalidator/

2 голосов
/ 18 сентября 2009

Используйте специальный валидатор со свойством ClientValidationFunction для этой функции.

 function validate(source, arguments) {
            var textboxes = document.getElementsByTagName("INPUT");
            for (var i = 0; i < textboxes.length; i++) {
                if (textboxes[i].type == "text" && textboxes[i].value != "") {
                    arguments.IsValid = true;
                    return;
                }
            }
            arguments.IsValid = false;
        }
0 голосов
/ 18 сентября 2009

Используйте Custom Validator, нет необходимости циклически проходить по текстовым полям на странице, так как этот подход позволяет получить ВСЕ текстовые поля на странице. Функция JavaScript, указанная в ClientValidationFunction, будет вызываться для каждого текстового поля, с которым связан валидатор.

<asp:TextBox ID="txtHomePhone" runat="server"></asp:TextBox>
<asp:CustomValidator ID="cvHomePhone" runat="server" ErrorMessage="*" ClientValidationFunction="Validate" ControlToValidate="txtHomePhone"  ValidateEmptyText="true"></asp:CustomValidator>


<asp:TextBox ID="txtWorkPhone" runat="server"></asp:TextBox>
<asp:CustomValidator ID="cvWorkPhone" runat="server" ErrorMessage="*" ClientValidationFunction="Validate" ControlToValidate="txtWorkPhone"  ValidateEmptyText="true"></asp:CustomValidator>


<asp:TextBox ID="txtMobilePhone" runat="server"></asp:TextBox>
<asp:CustomValidator ID="cvMobilePhone" runat="server" ErrorMessage="*" ClientValidationFunction="Validate" ControlToValidate="txtMobilePhone"  ValidateEmptyText="true"></asp:CustomValidator>


<script language="javascript">
function Validate(sender, args)
{
    args.IsValid = false;
    if(args.Value != "")
    {
        args.IsValid = true;
    }
}
</script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...