Pregunta

Tengo una función de validación personalizada en JavaScript en un control de usuario en un sitio web .Net 2.0 que verifica que la tarifa pagada no exceda el monto adeudado.

He colocado el código del validador en el ascx archivo, y también he intentado usar Page.ClientScript.RegisterClientScriptBlock() y en ambos casos la validación se activa, pero no puede encontrar la función JavaScript.

La salida en la consola de errores de Firefox es "feeAmountCheck is not defined".Aquí está la función (esto fue tomado directamente de Firefox->ver código fuente)

<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>

¿Alguna idea de por qué no se encuentra la función?¿Cómo puedo solucionar esto sin tener que agregar la función a mi página maestra o página de consumo?

¿Fue útil?

Solución

Intente cambiar los nombres de los argumentos a sender y args.Y, una vez que lo tengas funcionando, cambia la llamada a ScriptManager.RegisterClientScriptBlock, independientemente del uso de AJAX.

Otros consejos

Cuando usas .Net 2.0 y Ajax, debes usar:

ScriptManager.RegisterClientScriptBlock

Funcionará mejor en entornos Ajax que la versión anterior de Page.ClientScript.

También podrías usar:

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

Eso resolverá automáticamente la identificación del cliente para el elemento sin que tengas que descubrir que se llama 'ctl00_footerContentHolder_Fees1_FeeDue'.

Si bien todavía me gustaría una respuesta sobre por qué no se reconocía mi javascript, la solución que encontré mientras tanto (y debería haberlo hecho en primer lugar) es usar un Asp:CompareValidator en lugar de un Asp:CustomValidator.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top