ASP.Net personalizado do lado do cliente Validação

votos
23

Eu tenho uma função de validação personalizada em JavaScript em um controle de usuário em um site Net 2.0 que verifica para ver que a taxa paga não é superior ao valor da taxa devida.

Eu coloquei o código de validação no ascxarquivo, e eu também tentei usar Page.ClientScript.RegisterClientScriptBlock()e em ambos os casos, os incêndios de validação, mas não consegue encontrar a função JavaScript.

A saída no console de erros do Firefox é feeAmountCheck is not defined. Aqui é a função (isso foi levado diretamente a partir firefox-> ver fonte)

<script type=text/javascript>
    function feeAmountCheck(source, arguments)
    {
        var amountDue = document.getElementById('ctl00_footerContentHolder_Fees1_FeeDue');
        var amountPaid = document.getElementById('ctl00_footerContentHolder_Fees1_FeePaid');

        if (amountDue.value > 0 && amountDue >= amountPaid)
        {
            arguments.IsValid = true;
        }
        else
        {
            arguments.IsValid = false;
        }

        return arguments;
    }
</script>

Alguma idéia de por que a função não está sendo encontrado? Como posso resolver isso sem ter que adicionar a função à minha página mestra ou consumir página?

Publicado 04/08/2008 em 17:44
fonte usuário
Em outras línguas...                            


4 respostas

votos
12

Tente alterar os nomes de argumentos para sendere args. E, depois de tê-lo funcionando, mude a palavra ao ScriptManager.RegisterClientScriptBlock, independentemente do uso de AJAX.

Respondeu 04/08/2008 em 18:02
fonte usuário

votos
6

Quando você estiver usando .Net 2.0 e Ajax - você deve usar:

ScriptManager.RegisterClientScriptBlock

Ele vai trabalhar melhor em ambientes Ajax, em seguida, a antiga versão Page.ClientScript

Respondeu 04/08/2008 em 17:51
fonte usuário

votos
0

Além disso, você poderia usar:

var amountDue = document.getElementById('<%=YourControlName.ClientID%>');

Isso vai resolver automaticamente o ID do cliente para o elemento sem você ter que descobrir o que ele é chamado 'ctl00_footerContentHolder_Fees1_FeeDue'.

Respondeu 13/06/2009 em 19:10
fonte usuário

votos
0

Enquanto eu ainda gostaria de uma resposta para por que o meu javascript não estava sendo reconhecido, a solução que eu encontrei nesse meio tempo (e deveria ter feito em primeiro lugar) é usar um Asp:CompareValidatorem vez de um Asp:CustomValidator.

Respondeu 04/08/2008 em 20:13
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more