-2

可能重复:
函数提前触发

我已经编写了这段代码,但是当我调用函数 test() 时,即使我什至没有机会从 UI 日期选择器中单击并选择一个日期,它到底为什么会提醒我它未定义?

对我来说似乎没有意义?

var sdate

function test() {
    alert(select_date())
}

function select_date() {
    $('#dd').dialog({
        autoOpen: true,
        modal: true,
        overlay: {
            opacity: 0.5,
            background: 'black'
        },
        title: "title",
        height: 265,
        width: 235,
        draggable: false,
        resizable: false
    }); //end of dialog

    $('#d1').datepicker({
        onSelect: function() {
            sdate = $(this).val();
            $("#dd").dialog("close");
        }
    });
    return sdate
}​
4

1 回答 1

1

onSelect是一个事件回调,您试图在它知道要做什么之前返回一个值。不可能让您test()返回该值,因为它稍后会出现。

您应该从事件回调中执行警报或任何逻辑:

$('#d1').datepicker({
    onSelect: function() {
        sdate = $(this).val();
        $("#dd").dialog("close");
        alert(sdate);
        // or your own function
        someOtherTest(sdate);
    }
});

-

function someOtherTest(date) {
    alert(date);
}
于 2012-08-30T17:34:36.013 回答