Pergunta

Atualmente, estou usando o plugin de validação para validar um formulário (usando os controles do ASP.NET). Tenho retirados das regras a partir da configuração padrão dentro do método form.validate ou seja:

    $("form").validate({

    rules: {
        ctl00$ContentPlaceHolder1$dgQuestions$ctl14$iRadList_Col0: "required"
    }

});

Agora tenho estes em várias funções que adicionam o ruless dependendo do que o botão é clicado. Esta multa trabalha para caixas de texto, mas para um RadioButtonList quando as tentativas de plugin para adicionar a regra não é um erro dizendo que o elemento é indefinido.

function addRuleSet() {
    $("#ctl00$ContentPlaceHolder1$dgQuestions$ctl14$iRadList_Col0").rules("add", { required: true });

}

Eu acho que o problema é que eu estou usando o atributo de nome (asp puts $ in) para definir o grupo que os botões de rádio pertencem ao invés de um id (, mas as configurações estáticas todos os elementos sao definidas usando o nome atributo. de qualquer forma eu não estou certo de como contornar adicionar uma regra para um grupo de botões de rádio associadas, qualquer conselho seria apreciado.

PS Eu realmente precisa chamar o RadioButtonList em vez dos botões de opção individual.

Foi útil?

Solução

Você também pode aplicar uma regra definindo as classes no elemento. Por exemplo, se você dá a classe "necessária" a uma entrada, a regra exigida se aplica a esse elemento. Para fazer isso, você pode usar a propriedade CssClass do controle. Você pode precisar experimentar com os controles compostos, como RadioButtonList, para se certificar de que a classe está sendo aplicado aos elementos de entrada gerados, não o recipiente. Se você tiver problemas com isso, uma maneira de fazê-lo seria adicionar a classe usando jQuery após a página é carregada com base em um seletor.

<asp:RadioButtonList id="RadList" runat="server" CssClass="required">
   ...
</asp:RadioButtonList>

ou

<script type="text/javascript">
     $(function() {
          $(':radio').addClass('required');
          $('form').validate();
     });
</script>

Para uma regra complexa, baseada em classes você pode adicionar novas regras usando addClassRules.

<script type="text/javascript">
    $(function() {
        $.validator.addClassRules({
             range0to10: {
                  range: [0, 10]
             },
             name: {
                  minlength: 2,
                  required: true
             }
        });
        $('form').validate();
    });
</script>

<form ... >
<input type="text" name="rating" id="rating" class="range0to10" />
<input type="text" name="firstName" id="firstName" class="name" />
<input type="text" name="lastName" id="lastName" class="name" />
</form>

Outras dicas

Depois de dias de esta me deixando louco, fazendo a pergunta me fez pensar como obter o elemento retornando corretamente, e me deparei com este método em referenciar reto, o que me permite fazê-lo:

$("input:radio[name='ctl00$ContentPlaceHolder1$dgQuestions$ctl14$iRadList_Col0']").rules("add", { required: true });
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top