jquery Mobile pagecreate no carga la función

Soy relativamente nuevo en jquery y jquery mobile. Tengo un nuevo sitio móvil que utiliza la carga de páginas ajax. El problema, por supuesto, es que no cargará la secuencia de comandos en cada página, por lo que la secuencia de comandos tiene que ir a la página de inicio con el menú.

Utilizo pagecreate para escuchar la página y luego cargar el script.

El problema que tengo es que en una página tengo un botón de envío que llama a una función. El pagecreate hace su trabajo y carga el script, pero cuando hago clic en el botón Enviar, no se llama a la función. La función está bien por sí sola, por lo que el problema debe ser que no puede simplemente poner una función en la creación de página.

No estoy seguro de cuál es la sintaxis correcta.

        $('#calendar').live('pagecreate',function(event){
            function makeUpDates(){
                // concantenate values to date_start and date_end hidden inputs
                var dateString = document.getElementById('date').value,
                date = new Date(dateString);

                document.getElementById('date_start').value = date.getFullYear() + '-' + (date.getMonth()+1) + '-' + date.getDate();

                var numDays = document.getElementById('slider').value;
                date.setDate(date.getDate() + parseInt(numDays));   

                var dateEnd = date.getFullYear() + '-' + (date.getMonth()+1) + '-' + date.getDate();
                document.getElementById('date_end').value = dateEnd;

            }
        });         

preguntado el 08 de noviembre de 11 a las 14:11

2 Respuestas

No estoy realmente seguro de que lo entienda, pero ¿por qué define una función en una función? De esa forma nunca se llama, ¿o quieres llamarlo más tarde?

Cuando desee que se ejecute en la creación de página, simplemente puede hacer:

$('#calendar').live('pagecreate',function(event){
// concantenate values to date_start and date_end hidden inputs
var dateString = document.getElementById('date').value,
date = new Date(dateString);

document.getElementById('date_start').value = date.getFullYear() + '-' + (date.getMonth()+1) + '-' + date.getDate();

var numDays = document.getElementById('slider').value;
date.setDate(date.getDate() + parseInt(numDays));   

var dateEnd = date.getFullYear() + '-' + (date.getMonth()+1) + '-' + date.getDate();
});

respondido 08 nov., 11:19

Sí, deseo llamar a la última función cuando se hace clic en enviar - Keith Power

ACTUALIZACIÓN:

¿Funcionaría esto?

HTML (página con id = 'calendario'), eliminado al hacer clic y agregado id

<button type="submit" name="continue" id="continue" data-icon="arrow-r" data-iconpos="right">Continue</button>

JS

$('#calendar').live('pagecreate',function(event){
    // Call function when live event happens         
    $('#continue').click(function() {
        makeUpDates();
    });
});

// Move function outside live event
function makeUpDates() {
    // concantenate values to date_start and date_end hidden inputs
    var dateString = document.getElementById('date').value,
    date = new Date(dateString);

    document.getElementById('date_start').value = date.getFullYear() + '-' + (date.getMonth()+1) + '-' + date.getDate();

    var numDays = document.getElementById('slider').value;
    date.setDate(date.getDate() + parseInt(numDays));   

    var dateEnd = date.getFullYear() + '-' + (date.getMonth()+1) + '-' + date.getDate();
    document.getElementById('date_end').value = dateEnd;
}

No estoy seguro de que necesites el evento en vivo, podrías probar esto también.

//$('#calendar').live('pagecreate',function(event){
    // Call function when live event happens         
    $('#continue').click(function() {
        makeUpDates();
    });
//});

respondido 08 nov., 11:19

Hola Phill, deseo llamar a la función cuando se hace clic en enviar Continuar - Keith Power

Ni siquiera estoy seguro de que necesites el evento en vivo. Phill Pafford

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