ASP.Net Personalizado Validação Do Lado Do Cliente
-
08-06-2019 - |
Pergunta
Eu tenho um costume função de validação em JavaScript em um controle de usuário em um .Net 2.0 web site que verifica que o valor pago não é em excesso ao valor da taxa devida.
Eu tenho colocado o validador de código no ascx
arquivo, e eu também tentei usar Page.ClientScript.RegisterClientScriptBlock()
e, em ambos os casos, a validação de incêndios, mas não é possível encontrar a função JavaScript.
A saída no Firefox erro do console é "feeAmountCheck is not defined"
.Aqui é a função (esta foi levado diretamente a partir do firefox->exibir código 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 corrigir isso sem ter de adicionar a função a minha página principal, ou a consumir página?
Solução
Tente alterar o argumento de nomes para sender
e args
.E, depois de tê-lo funcionando, mudar a chamada para ScriptManager.RegisterClientScriptBlock
, independentemente do AJAX usar.
Outras dicas
Quando você estiver usando .Net 2.0 e Ajax - você deve usar:
ScriptManager.RegisterClientScriptBlock
Ele vai trabalhar melhor em Ajax ambientes, em seguida, a Página antiga.ClientScript versão
Você também pode usar:
var amountDue = document.getElementById('<%=YourControlName.ClientID%>');
Que vai resolver automaticamente o cliente de id para o elemento sem você ter que descobrir o que é chamado de 'ctl00_footerContentHolder_Fees1_FeeDue'
.
Enquanto eu ainda gostaria de uma resposta para o porquê do meu javascript não estava sendo reconhecido, a solução que eu encontrei, entretanto (e deveria ter feito em primeiro lugar) é a utilização de um Asp:CompareValidator
em vez de um Asp:CustomValidator
.