Aquí podría ser tu PUBLICIDAD


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 Rob Allen
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 06:02
fuente por usuario Greg Hurlman


Aquí podría ser tu PUBLICIDAD


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 05:51
fuente por usuario brendan

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 07:10
fuente por usuario kpax

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 08:13
fuente por usuario Rob Allen