Jquery: llame a una función de cambio en la carga del documento

Estoy usando jquery en ASP.NET MVC 4. Tengo un cuadro de texto con id='ContactID' que tiene un evento de cambio. Cuando cambia 'ContactID', el valor en el cuadro de texto se usa en una llamada ajax que se comunica con una base de datos y devuelve un resultado JSON, que luego uso para llenar otros cuadros de texto en la página. A partir de ese momento, hay ciertos campos que necesito que sean de solo lectura o no, dependiendo de si JsonResult llenó el cuadro de texto; esto es para que el usuario pueda ingresar valores en estos cuadros de texto si están en blanco. Si se llenó un cuadro de texto, haga que el cuadro de texto sea de solo lectura; de lo contrario, haga que el cuadro de texto no sea de solo lectura. Esto funciona muy bien, pero cuando el usuario envía el formulario, todos los valores de la página vuelven a ser editables. Este es un comportamiento que no quiero.

Mi pregunta es: ¿hay alguna manera de llamar a mi función ContactID.change cuando se carga la página, pero solo cuando ContactID no está en blanco?

    $(document).ready(function () {
    $("form :input:enabled:visible:first").focus();
    $("form :input:enabled:visible:first").select();
    $(".input-validation-error").first().focus();
    $(".input-validation-error").first().select();

    //I want to check to see if the ContactID textbox is populated when the document is ready
      //If ContactID is populated, I want the ContactID.change function to run
});

$('#ContactID).change(function () {
    var contactIDValue = $('#ContactID).val();

    if (contactIDValue.length != 0) { 
        //ContactID is populated; attempt to get Contact information

        //these fields should never be modified if using a ContactID
        $('#ContactStreet2').attr('readonly', true);
        $('#Contact2Name').attr('readonly', true);
        $('#Contact1Phone').attr('readonly', true);
        $('#Contact2Phone').attr('readonly', true);
        $('#Contact1Fax').attr('readonly', true);
        $('#Contact2Fax').attr('readonly', true);
        $('#Contact1Email').attr('readonly', true);
        $('#Contact2Email').attr('readonly', true);

        $.ajax({
            url: '@Url.Action("GetContactInformationFromContactID", "RelevantController")',
            type: 'POST',
            data: { ContactIDValue : contactIDValue },
            success: function (contact) {

                //set all text boxes to the contact's information
                $('#ContactStreet1').val(contact.STREET1);
                $('#ContactStreet2').val(contact.STREET2);
                $('#ContactCity').val(contact.CITY);
                $('#ContactState').val(contact.STATE);
                $('#ContactZip').val(contact.ZIP);
                $('#ContactCountry').val(contact.POINTID);
                $('#Contact1Name').val(contact.CONTACT1NAME);
                $('#Contact2Name').val(contact.CONTACT2NAME);
                $('#Contact1Phone').val(contact.CONTACT1PHONE);
                $('#Contact2Phone').val(contact.CONTACT2PHONE);
                $('#Contact1Fax').val(contact.CONTACT1FAX);
                $('#Contact2Fax').val(contact.CONTACT2FAX);
                $('#Contact1Email').val(contact.CONTACT1EMAIL);
                $('#Contact2Email').val(contact.CONTACT2EMAIL);

                //disable or enable based on whether the field is populated
                if (contact.STREET1 != null && contact.STREET1.length > 0) {
                    $('#ContactStreet1').attr('readonly', true);
                }
                else {
                    $('#ContactStreet1').attr('readonly', false);
                }

                if (contact.CITY != null && contact.CITY.length > 0) {
                    $('#ContactCity').attr('readonly', true);
                }
                else {
                    $('#ContactCity').attr('readonly', false);
                }

                if (contact.STATE != null && contact.STATE.length > 0) {
                    $('#ContactState').attr('readonly', true);
                }
                else {
                    $('#ContactState').attr('readonly', false);
                }

                if (contact.ZIP != null && contact.ZIP.length > 0) {
                    $('#ContactZip').attr('readonly', true);
                }
                else {
                    $('#ContactZip').attr('readonly', false);
                }

                if (contact.POINTID != null && contact.POINTID.length > 0) {
                    $('#ContactCountry').attr('readonly', true);
                }
                else {
                    $('#ContactCountry').attr('readonly', false);
                }

                if (contact.CONTACT1NAME != null && contact.CONTACT1NAME.length > 0) {
                    $('#Contact1Name').attr('readonly', true);
                }
                else {
                    $('#Contact1Name').attr('readonly', false);
                }
            }
        });
    }
    else {
        //ContactID is not populated; enable all Text boxes
        $('#ContactStreet1').val(''); $('#ContactStreet1').attr('readonly', false);
        $('#ContactStreet2').val(''); $('#ContactStreet2').attr('readonly', false);
        $('#ContactCity').val(''); $('#ContactCity').attr('readonly', false);
        $('#ContactState').val(''); $('#ContactState').attr('readonly', false);
        $('#ContactZip').val(''); $('#ContactZip').attr('readonly', false);
        $('#ContactCountry').val(''); $('#ContactCountry').attr('readonly', false);
        $('#Contact1Name').val(''); $('#Contact1Name').attr('readonly', false);
        $('#Contact2Name').val(''); $('#Contact2Name').attr('readonly', false);
        $('#Contact1Phone').val(''); $('#Contact1Phone').attr('readonly', false);
        $('#Contact2Phone').val(''); $('#Contact2Phone').attr('readonly', false);
        $('#Contact1Fax').val(''); $('#Contact1Fax').attr('readonly', false);
        $('#Contact2Fax').val(''); $('#Contact2Fax').attr('readonly', false);
        $('#Contact1Email').val(''); $('#Contact1Email').attr('readonly', false);
        $('#Contact2Email').val(''); $('#Contact2Email').attr('readonly', false);
    }
});

Una forma en que pensé que podría lograr esto fue haciendo algo como esto:

    $(document).ready(function () {
        $("form :input:enabled:visible:first").focus();
        $("form :input:enabled:visible:first").select();
        $(".input-validation-error").first().focus();
        $(".input-validation-error").first().select();

        var contactIDValue = $('#ContactID).val();

        if (contactIDValue.length != 0) {
             //a lot of failure on my part going on here -_-
        }
    });

Pero no puedo encontrar ningún lugar que indique cómo llamar a una función de cambio como la que quiero. ¿Alguien sabe cómo puedo hacer esto? ¡Toda ayuda sería muy apreciada, por pequeña que sea!

preguntado el 22 de noviembre de 13 a las 15:11

Hay errores de sintaxis, código fuera de la función lista para DOM que probablemente debería estar dentro, comillas faltantes, etc. Corrija lo obvio primero y tendrá un mejor cambio para que funcione, simplemente abra la consola en su navegador y verá ver todos los errores. -

Tengo curiosidad por abrir la consola de desarrollador en un navegador. He visto a gente usándolo, pero nunca he sabido cómo abrirlo yo mismo. ¿Sabes cómo puedo hacer esto en IE10? -

Claro, en IE10 vas a las páginas de descarga de Chrome y descargas el navegador Chrome. -

1 Respuestas

Puedes simplemente llamar .change() que activará los controladores de eventos de cambio registrados. Pero asegúrese de que el evento se active después de que se registren los controladores deseados.

$('#ContactID').change()

respondido 22 nov., 13:15

Eso lo resolvió. Lo marcaré como respuesta cuando expire el tiempo de respuesta. ¡Muchas gracias! - Aprendiz eterno

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.