jquery移动页面创建不会加载功能

时间:2011-11-08 14:17:12

标签: jquery jquery-mobile

我对jquery和jquery mobile相对较新。我有一个新的移动网站,使用ajax加载页面。问题当然是它不会在每个页面上加载脚本,因此脚本必须通过菜单进入主页。

我使用pagecreate来监听页面,然后为它加载脚本。

我遇到的问题是,在一个页面上,我有一个调用函数的提交按钮。 pagecreate完成其工作并加载脚本,但是当我单击提交按钮时,函数不会被调用。这个函数本身就可以,所以问题一定是你不能把一个函数放到页面创建中。

我不确定正确的语法是什么。

        $('#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;

            }
        });         

2 个答案:

答案 0 :(得分:1)

我不确定我是否会得到它,但为什么要在函数中定义一个函数?那样它永远不会被调用,或者你想稍后调用它?

当你想要在pagecreate上执行时,你可以简单地执行:

$('#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();
});

答案 1 :(得分:1)

更新:

这会有效吗

HTML(包含id ='日历'的页面),已删除onclick并添加了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;
}

我不确定你是否需要直播活动,你也可以试试这个

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