Validación personalizada del lado del cliente de ASP.Net

votos
23

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 de la tarifa adeudada.

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

La salida en la consola de error de Firefox es feeAmountCheck is not defined. Aquí está la función (esto fue tomado directamente de firefox-> ver 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é la función no se está encontrando? ¿Cómo puedo remediar esto sin tener que agregar la función a mi página maestra o página de consumo?

Publicado el 04/08/2008 a las 17:44
fuente por usuario
En otros idiomas...                            


4 respuestas

votos
12

Intente cambiar los nombres de los argumentos a sendery args. Y, después de que esté funcionando, cambie la llamada a ScriptManager.RegisterClientScriptBlock, independientemente del uso de AJAX.

Respondida el 04/08/2008 a las 18:02
fuente por usuario

votos
6

Cuando usa .Net 2.0 y Ajax, debe usar:

ScriptManager.RegisterClientScriptBlock

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

Respondida el 04/08/2008 a las 17:51
fuente por usuario

votos
0

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 tenga que darse cuenta de que se llama 'ctl00_footerContentHolder_Fees1_FeeDue'.

Respondida el 13/06/2009 a las 19:10
fuente por usuario

votos
0

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

Respondida el 04/08/2008 a las 20:13
fuente por usuario

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